/*
  Test function suite (last update:
  Mallipeddi Rammohan (email: mallipeddi.ram@gmail.com

  for linux:
  
  gcc -c fcnsuite.c
  ld -o fcnsuite.so -shared fcnsuite.o

  for windows:

  gcc -c fcnsuite.c -DWINDOWS
  dllwrap -o fcnsuite.dll fcnsuite.o
*/

#ifdef WINDOWS
#define DLLIMPORT __declspec (dllexport)
#else
#define DLLIMPORT
#endif

#include <math.h>


DLLIMPORT void
C01 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j;
  double f1, f2, f3, g1, g2, e[nx];
  double o[30] = {0.030858718087483,	-0.078632292353156,	0.048651146638038,	-0.069089831066354,	-0.087918542941928,	0.088982639811141,	0.074143235639847,	-0.086527593580149,	-0.020616531903907,	0.055586106499231,	0.059285954883598,	-0.040671485554685,	-0.087399911887693,	-0.01842585125741,	-0.005184912793062,	-0.039892037937026,	0.036509229387458,	0.026046414854433,	-0.067133862936029,	0.082780189144943,	-0.049336722577062,	0.018503188080959,	0.051610619131255,	0.018613117768432,	0.093448598181657,	-0.071208840780873,	-0.036535677894572,	-0.03126128526933,	0.099243805247963,	0.053872445945574};
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
  }
   
  /* objective function */
  f1 = 0.;
  f2 = 1.;
  f3 = 0.;
  g1 = 1.;
  g2 = 0.;
  for (j = 0; j < nx; j++)
    {
      f1 = f1 + pow (cos (e[j]), 4);
      f2 = f2 * cos (e[j]) * cos (e[j]);
      f3 = f3 + ((double) (j + 1)) * e[j] * e[j];
      g1 = g1 * e[j];
      g2 = g2 + e[j];
    }
  f[0] = fabs ((f1 - 2 * f2) / sqrt (f3));
  f[0] = -f[0]; 
  g[0] = 0.75 - g1;
  g[1] = g2 - 7.5 * ((double) nx);
}

DLLIMPORT void
C02 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j;
  double f1, g1, g2, h1, e[nx];
  double PI = 4.0 * atan (1.0);
  double o[30] = {-0.066939099286697,	0.470966419894494,	-0.490528349401176,	-0.312203454689423,	-0.124759576300523,	-0.247823908806285,	-0.448077079941866,	0.326494954650117,	0.493435908752668,	0.061699778818925,	-0.30251101183711,	-0.274045146932175,	-0.432969960330318,	0.062239193145781,	-0.188163731545079,	-0.100709842052095,	-0.333528971180922,	-0.496627672944882,	-0.288650116941944,	0.435648113198148,	-0.348261107144255,	0.456550427329479,	-0.286843419772511,	0.145639015401174,	-0.038656025783381,	0.333291935226012,	-0.293687524888766,	-0.347859473554797,	-0.089300971656411,	0.142027393193559};
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
  }
  /* objective function */
  f1 = e[0];
  g1 = 0.;
  g2 = 0.;
  h1 = 0.;
  for (j = 0; j < nx; j++)
    {
      if (e[j] > f1)
	  {
		  f1 = e[j];
	  }

	  g1 = g1 + (e[j] * e[j] - 10 * cos(2 * PI * e[j]) + 10);
	  g2 = g2 + (e[j] * e[j] - 10 * cos(2 * PI * e[j]) + 10);
	  h1 = h1 + ((e[j] - 0.5) * (e[j] - 0.5) - 10 * cos(2 * PI * (e[j] - 0.5)) + 10);
    }

  
  f[0] = f1;
  g[0] = 10.0 - g1/((double) nx);
  g[1] = -15.0 + g2/((double) nx);
  h[0] = -20.0 + h1/((double) nx);
}

DLLIMPORT void
C03 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j;
  double f1, h1, e[nx];
  double o[30] = {111.17633500088529,	92.07880492633424,	417.9818592609036,	253.16188128024302,	363.5279986597767,	314.334093889305,	187.32739056163342,	240.4363027535162,	422.60090880560665,	327.63042902581515,	62.04762897064405,	25.435663968682125,	360.56773191905114,	154.9226721156832,	33.161292034425806,	177.8091733067186,	262.58198940407755,	436.9800562237075,	476.6400624069227,	331.2167787340325,	75.205948242522,	484.33624811710115,	258.4696246506982,	419.8919566566751,	357.51468895930395,	166.3771729386268,	47.59455935830133,	188.20606700809785,	184.7964918401363,	267.9201349178807};
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
  }

  /* objective function */
  f1 = 0.;
  h1 = 0.;
  for (j = 0; j < (nx - 1); j++)
    {
      
	  f1 = f1 + (100 * pow((e[j] * e[j] - e[j+1]),2) + pow((e[j] - 1),2));
	  h1 = h1 +  pow((e[j] - e[j+1]),2);
	       
    }
  
  f[0] = f1;
  h[0] = h1;
  
}

DLLIMPORT void
C04 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j;
  double f1, h1, h2, h3, h4, e[nx];
  double o[30] = {0.820202353727904, 5.260154140335203,	-1.694610371739177,	-5.589298730330406,	-0.141736605495543,	9.454675508078164,	8.795744608532939,	9.687346331423548,	-3.246522827444976,	6.647399971577617,	1.434490229836026,	-0.506531215086801,	0.558594225280784,	7.919942423520642,	1.383716002673571,	-1.520153615528276,	-2.266737465474915,	6.48052999726508,	-8.893207968949003,	-3.528743044935322,	6.063486037065154,	-4.51585211274229,	7.320477892009357,	-8.990263774675665,	9.446412007392851,	-6.41068985463494,	-9.135251626491991,	2.07763837492787,	8.051026378030816,	-1.002691032064544};
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
  }

  /* objective function */
  f1 = e[0];
  h1 = 0.;
  h2 = 0.;
  h3 = 0.;
  h4 = 0.;
  for (j = 0; j < nx; j++)
    {
      if (e[j] > f1)
	  {
		  f1 = e[j];
	  }

	  h1 = h1 + e[j] * cos(sqrt(fabs(e[j])));
      h4 = h4 + e[j];
    }
  
  for (j = 0; j < ( nx/2 - 1); j++)
    {
      
	  h2 = h2 +  pow((e[j] - e[j+1]),2);
	        
    }
  for (j = nx/2  ; j < (nx - 1); j++)
    {
      
	  h3 = h3 +  pow((e[j] * e[j] - e[j+1]),2);
	        
    }
  f[0] = f1;
  h[0] = h1/((double) nx);
  h[1] = h2;
  h[2] = h3;
  h[3] = h4;
}


DLLIMPORT void
C05 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j;
  double f1, h1, h2, e[nx];
  double o[30] = {72.10900225247575,	9.007673762322495,	51.86632637302316,	41.365704820161,	93.18768763916974,	74.53341902482204,	63.745479932407655,	7.496986033468282,	56.16729598807964,	17.71630810614085,	28.009655663065143,	29.36357615570272,	26.966653374740996,	6.892189514516317,	44.29071160734624,	84.35803966449319,	81.16906730972529,	92.76919270133271,	3.826058034047476,	7.231864548985054,	14.446069444832405,	46.49943418775763,	22.155722253817412,	69.11723738661682,	88.99628570349459,	58.74823912291344,	52.265369214509846,	47.030120955005074,	53.23321779503931,	5.778976086909701};
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
  }

  /* objective function */
  f1 = e[0];
  h1 = 0.;
  h2 = 0.;
  for (j = 0; j < nx; j++)
    {
      if (e[j] > f1)
	  {
		  f1 = e[j];
	  }

	  h1 = h1 - e[j] * sin(sqrt(fabs(e[j])));
      h2 = h2 - e[j] * cos(0.5 * sqrt(fabs(e[j])));
    }
  f[0] = f1;
  h[0] = h1/((double) nx);
  h[1] = h2/((double) nx);
}

DLLIMPORT void
C06 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j, i, k, l;
  double f1, h1, h2, y[nx], M[nx][nx], e[nx];
  double o[30] = {-1.595515627742907,	7.633467047559741,	-5.764100483472472,	8.103197246263033,	-0.059515969417191,	-0.737189363693078,	-9.190862358160823,	4.22087353933443,	-1.745435308213725,	9.499044614342985,	3.82068618551277,	2.569334886907409,	9.354368119489862,	-0.852114934846258,	4.714177466874696,	6.775420647884232,	-9.074204717422479,	-3.760650327490145,	-0.77805530989772,	-7.487007842931314,	4.435061566086135,	-6.952711886757461,	-8.752326993212105,	-2.411334215593357,	-6.149894283287328,	1.049303005795593,	-6.049093253116644,	0.950328133373404,	1.443084229017085,	-0.163829799788475};
    
 
 double M1[10][10] = {-0.427907650939441,	 0.33300277992222,	0.158498600541243,	0.278765719516325,	0.222299060911893,	-0.29474502069992,	0.370057970680927,	-0.501453646373309,	-0.280145449898877,	-0.000651265117346,
                       0.224165315142979,	-0.261710409707008,	0.461868247797853,	0.088426027905637,	0.181816871315433,	0.373896699539441,	0.129585371011854,	-0.381595698048136,	0.299800543352535,	0.48473910987024,
                       0.53537800271001,	-0.346919032183315,	-0.245187528106815,	0.616142955927466,	0.041841873460541,	-0.159575037377286,	0.105947745849249,	-0.048303985087219,	-0.328079281746379,	-0.069709134117085,
                      -0.416970506616096,	-0.38848171660274,	-0.094221759803838,	-0.004397275883214,	-0.237544237428415,	-0.087984765871128,	0.123623297192573,	0.287283813863898,	-0.330878858096249,	0.62837597392732,
                      -0.173113815964007,	-0.41172550558533,	-0.499430088608083,	-0.219823423370544,	-0.134153464975979,	0.107615420480369,	0.438598883104602,	-0.36754189637868,	0.291862561306911,	-0.24605477533745,
                      -0.238828717007495,	-0.377132503962298,	-0.036565581442029,	-0.115315158370499,	0.298745579814478,	0.119889740767446,	-0.652016881734357,	-0.358800646641909,	-0.326697807053803,	-0.147917018157104,
                      -0.430957521699839,	-0.225924726595994,	0.119112314369716,	0.573035485004016,	0.085368416951095,	-0.090379611695263,	-0.158290455997733,	0.252439376164776,	0.529634351567821,	-0.189541361218442,
                       0.038944335110613,	0.082059986739041,	-0.407974613233548,	-0.116148517661389,	0.807124465614906,	-0.104709855101281,	0.075051783295566,	0.217165356560047,	0.152079302286292,	0.271071947907043,
                       0.158807462159919,	-0.014816097582468,	-0.081504338504322,	-0.114995329704289,	-0.203139388356386,	-0.726380618422525,	-0.310128975831262,	-0.313282470241953,	0.332760870420427,	0.284154344591495,
					  -0.081746794746219,	0.423796877332073,	-0.504499564436954,	0.34367868531852,	-0.228250720437377,	0.409151634256662,	-0.27457871527628,	-0.212617996823112,	0.090750526203861,	0.304532143452476};
  
  
  double M2[30][30] = {0.023071358604305,	-0.243539203031734,	0.187927245392782,	0.104249328959388,	0.260716866807433,	0.221583385806611,	-0.252797010046177,	0.100936946167369,	-0.211370612329087,	0.202097745021358,	-0.109876100185841,	0.145097436798732,	0.085948612459317,	-0.146422297038938,	0.190867385282501,	0.20021353815904,	-0.216595920201605,	0.020808284235714,	0.116861967544113,	0.125705173410299,	-0.12742261831595,	0.154492340007543,	-0.02487562612683,	-0.130654692719704,	0.041242046151542,	0.137578302481707,	-0.113685553667173,	0.080918468352169,	0.231134631372462,	-0.500691454466717,
					  0.219813700073054,	0.281621212959571,	-0.139807465673278,	-0.110419741705267,	0.111375560917958,	0.18950250606953,	-0.197263817723919,	-0.120573644625486,	0.150326895316473,	0.181439845450315,	-0.160383535661352,	0.119334369356968,	0.083421908456657,	0.205356036944096,	0.070741886265028,	-0.010306823979388,	0.165894298461859,	0.286426975125101,	0.242550434036209,	-0.257446539575199,	-0.124841748949664,	-0.284707849202713,	-0.266045211188684,	0.149407650859431,	0.234265400495501,	0.173236453713421,	-0.268903873738916,	-0.039222449976035,	-0.076974292905734,	0.007845772247666,
					 -0.004556210660988,	-0.185010374871545,	0.301301193684884,	-0.10921707132215,	0.056649154772895,	-0.319259584148745,	-0.121951562968817,	-0.114946550830203,	0.299113248329728,	0.245003405745115,	0.095158583529753,	-0.055656948570354,	-0.015031072793883,	0.179092320602946,	-0.139122690964128,	0.015458176172072,	-0.473892415411379,	0.248799402354716,	0.082952673098456,	0.113131317862851,	-0.149011135793801,	0.130435444369303,	-0.13561458613853,	0.11308864609885,	0.036204321234517,	0.087604692517882,	0.120848540211163,	0.19940636435041,	-0.036809747154144,	0.273890394537969,
					  0.084637445870772,	0.010234637261837,	0.0163505679041,	-0.291324368670689,	0.139923837626945,	0.208455731467674,	0.078963492326544,	0.126450260433286,	0.165919594030767,	0.278689150458097,	-0.098320280555702,	0.005769185393483,	-0.092678642477698,	-0.089451840157247,	0.094755103368655,	-0.207537949603887,	-0.030327606297323,	-0.338124956876588,	0.16620777623828,	0.345468896633115,	0.232248040914797,	-0.044083405261306,	0.19399037033832,	0.125847249224541,	-0.089882822508969,	-0.146623682416915,	-0.377000734416181,	0.236892103614607,	-0.02921365683848,	0.196331177937226,
					  0.074312304236457,	-0.225574447201836,	0.082165637933408,	-0.033209964886626,	-0.395153290195699,	0.237532238053277,	0.190561243631616,	0.246871613324737,	0.290083591667706,	-0.167384565782564,	-0.364144333118163,	0.077714490762667,	0.173586703218393,	-0.06768099740148,	-0.214558447436607,	0.177971891604503,	-0.156757421164456,	0.218776801667123,	-0.082457734254522,	-0.021931934191503,	-0.077019249390667,	-0.053740971959229,	0.302519716272707,	0.01060499532639,	0.213434093287663,	-0.040533349166557,	-0.130510850208411,	-0.042664408542468,	-0.119334391939199,	-0.047175447691726,
					  0.059763888754179,	0.280448600610953,	0.168027393015553,	0.107898885039039,	0.078129132208644,	0.016725542148049,	-0.068862345396511,	0.256062380545733,	0.354672938188716,	0.094803370580719,	-0.070360138265119,	-0.171709187603815,	-0.217858919814539,	0.101783534628229,	-0.3179989701311,	-0.366489963591689,	-0.062085337817464,	-0.24855253685841,	0.021171334275235,	-0.156319199253231,	-0.134973123175041,	0.066947961696385,	0.003208576812388,	-0.27795817533011,	-0.038860789297872,	0.054899775422407,	0.085161477088784,	-0.144095337095427,	-0.046479992254913,	-0.33696238445883,
					 -0.366337733947864,	-0.166407788441605,	-0.324066002093473,	0.221420133757307,	-0.019574569704521,	0.232911992313817,	-0.029115729240295,	-0.186487058187222,	0.397518752619068,	0.17518781618224,	0.051852566445361,	-0.079220650943603,	-0.166432725021838,	-0.024221990224804,	-0.023790397460643,	0.18954911307234,	0.250048077779269,	-0.020194088105652,	0.181220139167084,	0.133993863209264,	-0.151098227786211,	0.332313719703799,	0.058249344755879,	0.17404967391927,	-0.068231608230426,	0.116051403905587,	0.031830502016625,	-0.173898895181996,	-0.035333966699982,	0.006553464834535,
					 -0.089339028871793,	-0.150644747151113,	0.333977718023231,	-0.023290983832132,	0.071484031968692,	0.063242327007743,	-0.00779727597403,	0.194454781194566,	0.086167326136549,	0.192374022340354,	0.350397911585836,	0.029740048674294,	-0.018753009632293,	-0.03019352628856,	-0.07197528032568,	0.301158224734001,	0.17169318271056,	0.082918207464545,	0.270691037309726,	-0.016451419802242,	0.239235646563372,	-0.447247884813242,	0.023841342689988,	-0.13108343259114,	-0.09075884678349,	-0.158370971426108,	0.136668222091284,	-0.309761815654371,	-0.109888826877523,	0.009150635095007,
					  0.074888191567131,	0.083676205350129,	-0.083179354547031,	-0.066637896381512,	0.053095160511266,	-0.316861186599257,	-0.29440100906201,	-0.244402988924601,	0.017206601507865,	0.124338014724408,	-0.385746577427,	0.297328957427912,	-0.230153572792195,	-0.253203421162331,	-0.208078674142006,	0.144353576321385,	0.064304889129675,	0.134789234354328,	-0.138917258189494,	0.116963134427208,	0.05362753481884,	-0.015827322352239,	0.127418324851312,	-0.278973717947007,	-0.229563349427393,	-0.117365551566048,	-0.110405189834349,	-0.228624200829576,	0.006442191211637,	0.093722093619552,
					  0.145179110717378,	0.296309987026553,	-0.207923380305322,	-0.014984827668181,	-0.376306239493006,	-0.079727038632315,	0.039301457650374,	0.280141080421287,	-0.049843469703849,	0.338344539312377,	0.112751165836885,	-0.200149157556593,	0.194010750834463,	0.039647110377517,	0.253986903567107,	0.169124043636955,	-0.147638457634677,	0.090494694760029,	0.038999227519237,	0.044135580403696,	-0.155065521821391,	0.04468936325164,	0.121062878126268,	-0.173158624179059,	-0.362179299761345,	0.168984801824032,	-0.050803401252733,	-0.124928370613716,	0.154932143045688,	0.107528702725028,
					 -0.247769518547637,	-0.013026391999973,	0.208366068872463,	-0.01308241030252,	-0.420850844853081,	-0.015585757874256,	0.024416269182916,	-0.15757671662769,	0.000937570811116,	0.114839339525928,	0.152748867215816,	0.400530911643258,	-0.099591996137782,	0.046119070527813,	-0.084057871760255,	0.037523835783196,	0.082944630739407,	-0.250434288453272,	-0.003108994546258,	-0.308632885138753,	-0.249962227016132,	-0.103776460000353,	-0.065811962324665,	0.008063951073233,	-0.20928404905756,	-0.059857929446445,	-0.239070452324862,	0.326048730324964,	0.12085455969946,	-0.081508052771155,
					  0.029335186852684,	0.42479534654041,	0.024506562358727,	0.119627472308365,	0.185031279097699,	0.174363196232417,	-0.13617821264296,	-0.053577225314059,	0.158112469526072,	-0.234896255576176,	0.140991780449312,	0.167717918159266,	-0.147227348718694,	0.025588809721566,	0.162073030990437,	0.167886922952055,	-0.163588516104328,	0.076857164260112,	-0.056586802740237,	0.131435075006562,	-0.249447709957678,	-0.203617006385776,	0.42397887818139,	0.171046610279555,	-0.053268384703754,	-0.180711334111722,	0.264203012368296,	0.195834884778332,	0.054890300944545,	-0.015768540027705,
					 -0.118411599514207,	-0.186573450160536,	0.104726198114066,	0.425554231240091,	-0.142023526088077,	0.230649975647185,	-0.259005051016549,	-0.123471617679185,	-0.021359056928563,	0.004900524854479,	-0.046686074187159,	-0.249158055609082,	-0.085734101080989,	0.066568574763972,	0.051854545882703,	-0.375910086806283,	-0.015746972066708,	0.242445097805124,	-0.209690288874655,	0.101360776912699,	0.125633999274207,	-0.35060766970107,	0.062573716724893,	-0.065368441587413,	-0.152986434298628,	0.115992409521798,	-0.151390459165938,	0.047882375964519,	0.195175237595396,	0.150178383140756,
					 -0.0858624551914,	   -0.044206504461199,	-0.024191833901419,	-0.294463613925753,	-0.136549581242564,	0.19063192188534,	0.009078296358467,	-0.391384668907518,	-0.126869407752262,	0.342114961361082,	0.09116986748678,	-0.047152302046922,	0.059106641376471,	-0.17573962390328,	0.153263704805923,	-0.241727829980376,	-0.210029426125613,	-0.079980964940618,	-0.222398072129181,	-0.029578618396792,	-0.173678756156788,	-0.134473010768791,	0.152816363866217,	-0.02684732428053,	0.177058808287171,	-0.038354858709199,	0.205435928845276,	-0.258590743909628,	-0.316197162829926,	-0.141824125756808,
					 -0.174058638208522,	0.291199599238183,	0.266450303450098,	-0.028890863183029,	-0.001872306345431,	-0.028383053613087,	0.39408931761541,	-0.194729410189049,	0.084776372897711,	0.032277313861178,	-0.248588278162597,	-0.273699551170024,	-0.170479550505463,	-0.268762486929797,	0.06310137167014,	0.290307348954524,	0.012767532433376,	-0.062935704572033,	-0.09876386377763,	0.134130771563517,	0.05693674879587,	-0.212147182889801,	-0.207072437970811,	-0.008386554559657,	0.115821199976077,	0.331790803979211,	0.031869629763129,	0.084758011153661,	0.16616334234557,	-0.046598388159981,
					 -0.122539813734875,	0.055062021475661,	0.192259726298495,	0.111778689877941,	-0.097108288576286,	-0.060635211302085,	-0.19095906457098,	0.162096699758123,	-0.089809961872459,	0.286607914398291,	-0.463816666355172,	0.065667529388804,	0.110706918054021,	0.195570725883205,	0.127761253319044,	0.022293063803799,	0.09627643999163,	-0.214289667440959,	-0.068731650918356,	-0.149376519308406,	0.176925422707419,	0.039652800851065,	0.057845509202043,	0.428075459635867,	0.017700445535024,	-0.088604130882618,	0.375102294107653,	-0.103580953343745,	0.107912132657264,	0.082089072712939,
					  0.149871224860295,	-0.053980409768776,	-0.272294148054139,	0.212023004548897,	0.043390835529284,	-0.212612952696657,	0.273609522182537,	-0.222214200135187,	0.303225518533083,	0.137453813858163,	0.052721508158588,	0.103879953360173,	0.249853799417856,	0.062046913381309,	-0.023484859395315,	-0.033414850615502,	-0.196847877163258,	0.007222208672822,	-0.089375537303704,	0.014971153717819,	0.310981749028181,	-0.190284764420785,	-0.065522359741408,	0.188462632871619,	-0.15983055420235,	-0.180244626147409,	-0.009963799685459,	-0.005211451339253,	0.157429233733364,	-0.43492164414894,
					 -0.02591340911751,	   -0.019975433515814,	0.012110139396268,	-0.213764132741262,	0.031510019724613,	0.105961018652306,	-0.099189843238001,	-0.145134916398449,	-0.187599436771598,	-0.220155014764647,	-0.168521945543012,	-0.19963534047124,	0.286316901994479,	0.038596872030396,	-0.389762239991247,	0.012555284897496,	-0.015937810042766,	-0.087380574856683,	0.235991945782939,	0.15945701408713,	-0.165817676129441,	-0.168411073103876,	-0.028299618426901,	0.23088808548431,	-0.511396297338036,	0.148307223070328,	0.088388436173997,	0.00285611598734,	-0.122340930318911,	-0.131240403503548,
					 -0.121864113916304,	-0.014654550202084,	0.035376407571811,	-0.212780253670548,	0.006149014177479,	0.021959947216556,	0.256860233208179,	0.213074272394272,	0.045473086570827,	-0.042935595136984,	0.005139319533825,	0.418561398626004,	-0.04319205091174,	-0.147488524664772,	0.055288297966996,	-0.437421558534106,	0.114963949182547,	0.309587665604864,	0.053645939267238,	0.217876758821124,	-0.148693221159438,	-0.004741436812794,	-0.131874035298172,	0.121987204075402,	-0.11244194637973,	0.133120482557454,	0.211878365468138,	-0.201211182622069,	0.315903345963361,	-0.003829799168322,
					 -0.126123092831119,	0.313190363437176,	0.134166137039325,	-0.130542816564377,	-0.116589938908975,	0.085443534308242,	-0.269947041942654,	-0.078676889889736,	0.084414074333353,	0.000298119121542,	0.241097477550619,	-0.013849219460857,	0.283258173803501,	-0.356053350509168,	-0.200521645839119,	-0.079568162114918,	0.05507158321499,	0.203994934150072,	0.015633895463703,	-0.144331577377909,	0.437697067593003,	0.297725584138964,	0.155346658581911,	0.091016739015444,	0.064175206558093,	0.131923563597529,	-0.009483551236404,	0.127436711025714,	0.102565683180811,	-0.072676817293255,
					  0.213961481416887,	0.168198407737567,	0.31823576701544,	0.328503390360894,	-0.091998612617176,	0.128969378833434,	0.146855728314558,	-0.133451135740069,	0.000946498772983,	0.049030993239779,	-0.008693974193085,	0.273316199428816,	0.186258255014889,	0.121673024025174,	0.104119891469482,	-0.037688926878745,	0.181218379501068,	0.047504520560275,	-0.067127317277936,	0.32602546833527,	0.073459597320917,	0.227094230667246,	-0.141744489562412,	-0.1193848907061,	-0.147254533293153,	0.088613497608967,	0.046120322480013,	0.05408585177024,	-0.491385369232803,	0.008514563314963,
					  0.373877021735911,	-0.087117560556513,	-0.023885489008006,	0.077805222859825,	-0.017871548495562,	0.26358837782502,	0.065575922657135,	-0.282381989943325,	0.048000002005496,	0.042279234963912,	0.013088271901763,	0.111190815930443,	0.198510662128465,	-0.014384124608641,	-0.208222146457865,	0.01523138893421,	0.018334156916899,	-0.282753596074817,	0.168979172096339,	-0.025681854664133,	-0.026652903779445,	0.003721711693469,	0.028352368844246,	-0.279136067496355,	0.139205004101653,	0.058468745842254,	0.303325705259124,	-0.010308333500278,	0.429095223108768,	0.323047787361305,
					 -0.128405611991057,	0.016660592723202,	0.111243916639215,	0.239761127369325,	0.068309001097477,	-0.203559841815938,	0.158468603206916,	-0.160348595327825,	-0.030915796524762,	-0.191527960003824,	-0.122161126369174,	0.10356665464739,	0.043537045650486,	-0.123056805761277,	0.252735019348272,	-0.172529851185191,	-0.266956422045032,	-0.077735151931771,	0.521721038081855,	-0.269341636516775,	0.05644198608966,	0.01018864685953,	0.2936489196807,	-0.016034616559579,	-0.042418439509422,	0.191166234577746,	-0.140756155739667,	-0.217337765912142,	-0.111357824431006,	0.113419671426429,
					  0.153674075805796,	-0.011022646124339,	0.202463916655671,	-0.027051403687117,	0.176263010985745,	-0.047382166151001,	0.08551446547199,	-0.051324575366443,	-0.084499219728522,	0.010230420504937,	0.236455917693281,	0.083743635403334,	-0.023701061487849,	0.256429595445708,	-0.173057601125983,	0.095209668504116,	0.045760519759508,	-0.12440223123868,	-0.346424595333292,	0.023767632461596,	-0.041043070283435,	0.068357476777677,	0.291245664276342,	0.286275103859858,	0.036848691914435,	0.353118314841958,	-0.331808862503714,	-0.383349452504386,	0.143642268513429,	0.027583566795542,
					  0.146903999643725,	-0.041639008084258,	-0.060690712445623,	-0.014848846077282,	-0.198902394077235,	-0.189845616373261,	0.126415771427905,	-0.093885811231035,	-0.274755148739838,	0.192562550828159,	-0.00955771584604,	-0.060217337007873,	-0.304124138067199,	0.228203284134865,	-0.156997879239558,	-0.069035357837482,	0.229570952908168,	0.204871495276006,	0.305087073758034,	0.148995312488614,	0.088976318796948,	-0.02094647822294,	0.388157631106922,	0.002435434185887,	0.194961157508216,	0.138840097192971,	0.147179346529813,	0.254254871559064,	0.006342768764621,	-0.263623294949303,
					 -0.0608661505635,	    0.146555580711974,	-0.194475883468757,	0.207495722268346,	-0.30527462848705,	-0.086663219495567,	-0.248167037721791,	0.1478305421615,	-0.121344133341115,	-0.070302024600429,	0.135923524987969,	0.199771371050369,	-0.073677813979665,	-0.106546327557882,	-0.196109777527057,	0.015106503126995,	-0.275067420372013,	-0.263045499165718,	0.130739977649949,	0.389134209141338,	0.0631454997152,	-0.184055648701562,	-0.222864186591163,	0.149047004446891,	0.327616065803509,	0.131465125655398,	-0.040368285105394,	-0.149266070287538,	-0.067695848219009,	0.007103603845905,
					  0.268415194218636,	-0.243954293115292,	-0.166035019894207,	-0.099067226244108,	-0.023732611154401,	0.061484374174523,	-0.117474015531197,	0.130388583389478,	0.151702336383109,	-0.066938215583669,	0.035719870728927,	0.161868303295986,	-0.278204057137361,	-0.148328512373446,	0.141597766506655,	0.061626960392045,	-0.060266032062573,	-0.111704917464634,	-0.140570303860242,	-0.232333777262299,	0.222724407384168,	-0.099926162466341,	-0.011005404306214,	0.064346558576494,	-0.221880346048088,	0.527072940265472,	0.248443216841586,	0.171747007553667,	-0.213828101202187,	-0.003499225562305,
					  0.029190319041398,	0.137996386010025,	-0.052671046600567,	0.082574050365387,	0.019675523236783,	0.406627243313423,	0.245141617385011,	-0.011548010475965,	-0.309052771850073,	0.120019443429705,	-0.020626329277839,	0.051225179700079,	-0.3803441957409,	0.051626888991824,	-0.247774477788262,	0.078995410306428,	-0.380978923839887,	0.19975295763172,	0.041039748721239,	-0.203862088567774,	0.198405829717478,	0.184526042169612,	-0.16248302586394,	0.123244321241256,	-0.169482797451701,	-0.168013830401126,	-0.007352812240099,	-0.092879407331974,	-0.008329589503461,	0.087329377462898,
					  0.228678742930217,	-0.029649973176179,	0.210660606758725,	-0.268904999831607,	-0.35401954102632,	0.058820407990939,	-0.185768311536065,	-0.227653126947948,	0.155124303024404,	-0.325611959978846,	0.005404486381564,	-0.120351834967572,	-0.249429618409322,	0.193520134425257,	0.317257502472855,	0.035244068819801,	-0.029563667634032,	-0.033909953634353,	0.141763650017426,	0.109239149374551,	0.15343276968306,	0.165975594209104,	-0.140239055289629,	0.045756434259666,	-0.05682102669939,	-0.159759583212716,	-0.030595452046069,	-0.260893173081313,	0.174126057613149,	-0.184055361204547,
                     -0.454982071202166,	0.081028739628757,	-0.15454679842635,	-0.245309575415441,	0.070738655949495,	0.114407183940778,	-0.000803285383987,	-0.029585292203112,	0.034841728346049,	-0.090378694457875,	-0.087253833015541,	0.201658706322267,	0.107556168250323,	0.538785527750462,	0.027360507247175,	0.068052364992373,	-0.162699590061949,	-0.027702982041988,	-0.062665317946852,	0.088925544163789,	0.287078549836071,	-0.026926010195244,	0.059356754643412,	-0.389446957988569,	0.022367979523514,	0.192399044103956,	0.050439485449618,	0.023364347605351,	0.017553373460626,	-0.013236479997603};
     
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
	  y[j] = 0.;
	  if (nx == 10)
	  {
	   for ( l = 0; l < nx; l++)
		    M[l][j] = M1[l][j];
	  }
	  if (nx == 30)
	  {
	   for ( l = 0; l < nx; l++)
		    M[l][j] = M2[l][j];
	  }
  }

  for (i = 0; i < nx; i++)
  {
	  for (k = 0; k < nx; k++)
	  {
		  y[i] = y[i] + (e[k] + 483.6106156535) * M[k][i];
	  }
	  y[i] = y[i] - 483.6106156535;
  }
  
  /* objective function */
  f1 = e[0];
  h1 = 0.;
  h2 = 0.;
  for (j = 0; j < nx; j++)
    {
      if (e[j] > f1)
	  {
		  f1 = e[j];
	  }

	  h1 = h1 - y[j] * sin(sqrt(fabs(y[j])));
      h2 = h2 - y[j] * cos(0.5 * sqrt(fabs(y[j])));
    }
  f[0] = f1;
  h[0] = h1/((double) nx);
  h[1] = h2/((double) nx);
}

DLLIMPORT void
C07 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j;
  double f1, g1, g2, e[nx];
  double o[30] = {-1.46823271282738,	47.51401860909492,	-30.421056514069576,	-7.707941671844303,	-21.74698421666629,	-17.88116387879569,	5.274442455807971,	18.71403753778708,	-36.959734507345146,	-20.72950462154263,	25.4701966548936,	-25.439992885801573,	1.054563129830697,	-31.556579857545657,	-19.320382777005047,	17.16774285348282,	34.66536814401755,	-31.803705714749462,	-12.926898387712775,	25.489686517508602,	-45.23000430753644,	36.31774710581284,	-18.38690515559357,	34.86816378160691,	-37.530671214167334,	19.288852618585977,	0.684612418754519,	-12.636795982748637,	15.005454148879409,	-40.468678588994315};
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
  }

  /* objective function */
  f1 = 0.;
  g1 = 0.;
  g2 = 0.;
  for (j = 0; j < (nx - 1); j++)
    {
      
	  f1 = f1 + (100 * pow(((e[j]+1) * (e[j]+1) - (e[j+1]+1)),2) + pow(((e[j]+1) - 1),2));
	       
    }
  for (j = 0; j < nx; j++)
    {
      
	  g1 = g1 + e[j] * e[j];
	  g2 = g2 + cos( 0.1 * e[j]);
      
    }
  f[0] = f1;
  g[0] = 0.5 - exp( -0.1 * sqrt(1/((double) nx) * g1)) -3 * exp(1/((double) nx) * g2) + exp(1);
  
}

DLLIMPORT void
C08 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j, i, k, l;
  double f1, g1, g2, y[nx], M[nx][nx], e[nx];
  double o[30] = {-1.46823271282738,	47.51401860909492,	-30.421056514069576,	-7.707941671844303,	-21.74698421666629,	-17.88116387879569,	5.274442455807971,	18.71403753778708,	-36.959734507345146,	-20.72950462154263,	25.4701966548936,	-25.439992885801573,	1.054563129830697,	-31.556579857545657,	-19.320382777005047,	17.16774285348282,	34.66536814401755,	-31.803705714749462,	-12.926898387712775,	25.489686517508602,	-45.23000430753644,	36.31774710581284,	-18.38690515559357,	34.86816378160691,	-37.530671214167334,	19.288852618585977,	0.684612418754519,	-12.636795982748637,	15.005454148879409,	-40.468678588994315};
  
  
  double M1[10][10] = {-18.785768809450733,	 33.616954860437176, 26.882113915382682, -10.43306419742936, 	0.944892894082476, -3.353896433259691,	  3.535212733907637,  7.394276941396782,	7.790908752641235,	 2.091292109983567,
                      -0.38080580880289,	 10.420967284673154, 9.347291913115678,	 -20.926490513724943,	11.4259031588907,	1.10563725749954,	  36.87928250597037, -1.910339780463472,	7.56116849320932,	-9.743066435789972,
                      -12.341688082549489,	 6.362199355273804,	 8.248429939792464,	   8.089256366417835,	0.069234506619011,	2.578624135957486,	 -0.497340218618186, -2.062722095484327,	1.430205147745766,	15.52200376094467,
                      -17.00654251044467,	-12.679306064055677, 51.65812051951116,  -3.97661207806369,	    3.934938475013658,	-30.777202564613845,  6.146597147627116, -11.404959107806402,	12.694206030880832,	-9.395143228117439,
                      -5.484749154282662,	-13.643476981518553, -20.8125786035429,	  12.48063177681885,	0.844978205995699,	24.830393330514045,	  33.83850518570256, -17.003569707093064,  -5.293964367404844,	26.065703095424336,
                       11.422878520470586,	 10.221461943150496, -5.999478987400263, -8.935891602574142,    3.340791625151446,	3.924548854255449,	 -6.760571785727851, 14.016300477765046,	2.353396935795215,	-15.957358828479556,
                       14.1069797350053,	-0.689797572922294,	 25.92835826668488,	 -30.138271725378775,	12.953067028884863,	-17.125782201118525,  19.122903237509483, 3.85021017121606,	   14.44987126033593,	-37.768641488073015,
                       1.817162027385162,	-4.52289774299815,	 2.596064824368431,	 -3.077970366333548,	3.666238380627702,	-3.142271967105208,	 -1.93910379576585,	 -1.132846020949443,   -1.459397119228072,	-4.385065305078107,
                       17.05963501513677,	-40.88734304067851,	-9.04136854737176,	  9.207816613351653,	2.483559081696921,	-3.135238286666343,	 -0.515970843448524, -10.448164970351954,  -3.97908386413912,	-5.010151763870892,
                      -2.100410473384162,	 4.285743492212902,	 18.13880373052391,	 -5.569156622351854,	0.020414928764168,	-5.531568307180828,	 1.750746232557792,	  2.018382353850689,    8.96737078655512,	-3.593654241962948};
     
  double M2[30][30] = {2.511190264603399,	 8.257741094092125,	-4.576972024334265,	11.663051871013478,	1.839271199160904,	-3.930477981638431,	6.381869129516557,	5.554163663846647,	3.792259995720394,	-8.119579509114208,	-6.749873116676933,	-4.16744839268803,	-5.247229107097693,	4.380091021522936,	1.636265206648646,	1.545744455341335,	6.729651169519672,	-10.841704025647012, 5.27133366266056,	-7.315142457952093,	5.586455189183544,	0.134360209805352,	-4.757951297029205,	-7.494064226166734,	-5.71422876353246,	-3.494974588660678,	16.86892010541546,	-6.058600435639238,	-11.353403083342686,-1.092357620889664,
					 -1.176252081542598,	 0.194672319059377,	9.262321627779777,	-4.877620455960017,	-3.013825305151295,	4.138941347418219,	-4.381399078195643,	-1.095599959738453,	3.362553950833766,	-2.415178728944297,	-6.861613142354518,	-0.005940467288075,	2.135933445957106,	-0.307275749657439,	9.502954614655595,	3.789220991977143,	-2.76964275770075,	2.672716708411572,	-3.374116812054481,	-2.041106775198442,	-3.340247070143979,	-0.837499094352104,	-5.259049047845686,	-1.521493877085425,	3.560245065816806,	0.587849049777596,	-8.24965720380312,	1.577881184618359,	2.56392435402041,	 1.537958604481863,
					 -1.308581228315848,	-2.050371351098398,	-3.874959824774145,	-2.136018990593701,	0.425374281070453,	3.043654044666869,	2.852463840006697,	-4.609692730685587,	-2.676989994934014,	0.018654380314467,	4.1843245155883,	 -2.941454921101105,-9.0702547942116,	-2.890167502434176,	-6.517087530456076,	-6.458220473167814,	5.214757843970958,	-5.672828398157034,	-1.291826775778004,	-0.425237758250728,	2.004256913177237,	7.010207042020759,	3.245852998964355,	0.975852195193769,	1.406362603904871,	-2.052462316198574,	2.872078581244381,	2.445851054572349,	1.108924529459803,	-0.260629199129536,
					 -0.691301322822554,	-1.994532314862069,	-8.604754485993125,	-2.97610726321536,	-2.546281717050659,	0.13089272819699,	-2.095263510257371,	3.356968437392792,	0.259978867749323,	5.401823223841656,	3.061295803499265,	1.403978462555566,	3.459625904755164,	0.875144781306571,	-4.037867043038509,	2.69814135487501,	-1.046480563223284,	-0.162120818498023,	3.972120681919849,	-0.360095886115473,	-3.590431022975543,	1.135744786203014,	6.085551336331358,	-0.306597750598646,	-2.349583036995845,	3.903939972739528,	-1.48181865824383,	-2.878395159465752,	7.258503538363769,	4.796644771310021,
					 -0.444232081955838,	-3.571385678786192,	13.286045625307453,	-12.839633153682575,-4.489679872696604,	7.869013641543565,	-1.965105477391064,	-8.636636350365924,	-0.094822649845242,	-10.673493697992319,-12.53156986402604,	-1.854979185138595,	-4.845831775303889,	-3.303193299843544,	14.504105531464209,	2.590044768433951,	-6.135686158996087,	-4.270904315841696,	-6.861683086853831,	-2.744870140116196,	-5.102676391316569,	5.943125003510186,	-8.766966677691988,	2.000662359536807,	0.48220557102434,	7.450887387478847,	-10.45013256174983,	3.625933262996068,	4.179177543735097,	3.98247679713907,
					 -10.464299208072154,	-0.185820260985436,	6.552041396672776,	-5.911945191669922,	8.168937620030086,	-10.982208830632558,-3.00135846456146,	2.912065997677753,	2.671937505436929,	-3.256558888247419,	-1.010981945614573,	-8.18916926806801,	-12.001606012082647,0.565140546704374,	-6.816130902986662,	7.034212706943163,	12.40601107576485,	-14.537675875626526, 1.401546347401862,	0.070761477781216,	5.173018588042309,	17.500331178638167,	3.097673254889692,	-4.026635320023784,	3.007819170833911,	-6.986787465181084,	6.394195915881141,	3.687826212758699,	-10.500866576776128,-13.151879796730649,
					 -5.781123825040053,	-4.695427919915561,	9.384139425829048,	-7.575211154097536,	8.514278328525183,	-5.720630545110835,	-3.828493595935516,	5.90998861394398,	0.148907769173485,	-0.631185579095166,	-7.572076478194538,	-3.770557393047349,	-8.178577514209056,	-5.098256869553833,	-12.07105725371895,	1.248737932444238,	0.478544192523777,	-8.678825875969533,	-0.946209858630089,	-0.78972756845699,	-8.64978321329506,	2.485419664365408,	12.153488342644684,	-3.062242328783848,	-0.170370275829816,	-2.093524789628705,	-5.15404262324049,	4.508277504607992,	1.61064781893081,	-3.274879887486953,
					 2.268818310206689,	     7.300452401745146,	-4.331575628327129,	10.74428874720899,	0.15049273777556,	-0.522703831910356,	6.686183057924437,	3.782219973575128,	2.188704155720839,	-8.966284106856413,	7.937092834912006,	-1.31567415453634,	-3.395220022143096,	1.559847175500902,	2.78883479224772,	-2.138994752636062,	8.323858134206022,	1.103349691459627,	2.080995858068952,	3.671907915458957,	10.73018786831511,	-0.786574921144261,	-12.077147983799486,-3.200483300835418,	1.964680859010843,	-2.657000417145831,	12.549412268552729,	-5.048053145262655,	-8.92560318109584,	-3.291078633192861,
					 0.041055194191982,	     4.198164286592344,	0.380892004577647,	-8.23942251831774,	4.779957612796264,	-3.478785140983899,	-4.340229693544734,	-1.26961685769858,	6.146810236016467,	-3.071864805992567,	0.971337912956829,	-5.896120164000506,	-0.757550831858382,	0.878200934289778,	-1.532518943062243,	5.844371522790389,	-0.837014728066397,	-3.907278737140878,	-2.030173016623314,	3.202676786182734,	1.470137096717735,	6.858775309836105,	-5.751687072684216,	2.261109122092457,	5.446233047509159,	-0.994575214031629,	-4.198066474981203,	-0.916283719062444,	-4.341766414322003,	0.660003095340524,
					-4.758805234887069,	    -1.249096368305273,	5.230241683696193,	-19.44236789411332,	3.990165558570265,	-5.21678532927235,	-4.960118855176376,	2.113664727176411,	0.365246740004055,	3.670941659701974,	-1.914288039871711,	-6.094333718753953,	-2.682967627659987,	1.227422326532798,	-9.433645672535167,	4.96643787530529,	-3.616907241245708,	-0.145552345328748,	-2.280394788413511,	2.265409089297554,	-5.317818474692691,	4.356958717932082,	9.75139488271248,	2.184418024240871,	4.551729219908339,	-3.203937519303825,	-8.161877539527412,	9.881964507838315,	-0.942679393999977,	-4.09075977260806,
					 5.895714456877837,	     5.673958378336709,	-7.551189095277389,	8.6763663921392,	-8.74212847286295,	7.876941413449155,	6.186314942878492,	-1.385292259378321,	2.339350501494244,	-7.303402814099851,	-0.620345906721456,	-3.21480044327725,	-0.528558678306147,	-0.327651725159052,	6.60017678920534,	-4.030480514390237,	-2.74819741682516,	1.131719959794813,	4.041615304275,	    -3.807276819902737,	7.174795405973731,	-7.105910692661075,	-16.16824790535485,	-8.490742807482299,	-1.205275569694925,	-3.213783451897369,	10.19460083362542,	-8.1537702193513,	-3.34614228867147,	6.852576635102674,
					 5.050755100515472,	    -1.015084166538332,	-4.488951762662663,	3.071909362047136,	-6.309214790805194,	4.607171586689359,	0.518771985931275,	2.576207604994254,	-2.538951540887637,	3.871170428002043,	0.86099787829018,	9.333192517131101,	3.898241746958841,	2.045637143082407,	-4.632172666627585,	-3.251052343878506,	-10.340844584872428,9.938362935470167,	2.681875064667896,	-0.30928871960663,	-3.553804690623363,	-11.909220170048043,3.407795649838816,	-0.852234992909218,	1.470543694236073,	0.018651383236502,	-0.400939937078999,	1.006604199340888,	5.546567833598792,	8.936287451220219,
					-2.296736642073308,		-7.507685960269931,	3.878804185286892,	1.927870783876082,	8.606052457582582,	-4.902250427177561,	-0.369415251862622,	3.771105898431047,	-4.497236148553519,	6.92064424996612,	6.555606653106257,	3.979481264635631,	0.551670017289274,	-1.250380372234189,	-11.577926205347564,0.98949362466787,	4.643449205576342,	0.039903009834915,	2.717889467266028,	2.628829050189848,	-1.391097858187011,	2.040534828877561,	14.571897255676616,	1.64579970252636,	-0.601128848469179,	-0.840404796582696,	-1.463197992681945,	3.202376802222665,	-1.671176838446732,	-3.3759766251534,
					-3.937515676606634,		-3.139929919295693,	7.06320923587761,	1.809248475068868,	8.870247836692679,	-7.116279757514643,	-0.561569800957993,	1.607623766047816,	-0.442980337701897,	-5.392629763518957,	3.253312934476978,	-0.53910491395161,	-7.500926900397016,	0.980573085142957,	-5.634247758036995,	2.236908157606175,	3.147822704551946,	-5.937762475731414,	0.887239059660158,	3.778662703078195,	4.579851636624116,	9.68224407023739,	0.005007990083924,	-2.066608587954049,	-2.840100747113819,	1.07267047086035,	6.107120400203828,	-2.014818439278602,	-7.165823950693442,	-9.272074819149603,
					-2.680240010855875,		0.356004349959002,	-0.414456907621788,	-0.067764618278143,	5.320643303727243,	0.737875437883548,	1.213668435898487,	-3.145814327985767,	-2.507697183673514,	2.536104038824088,	3.558431317438912,	2.131159153330951,	3.764201252276733,	0.816204397371172,	-4.632956423959657,	0.184120289127522,	1.217433374070159,	-4.036068485529014,	2.258556949877698,	-0.910082542366675,	3.754187256312381,	7.457650756177197,	1.456847256376522,	-1.608612250250221,	-0.757648771963665,	3.790322347324032,	0.887040099051261,	-6.027791111032598,	-0.328191702726934,	0.866002766609515,
					 6.578208237675698,		0.818410293291321,	-9.288863917296439,	22.14413550757907,	-5.223269252930489,	1.804141126348005,	6.924767448007314,	-2.776780120617464,	-2.494384185627731,	4.743636200841757,	2.69082215234061,	6.088855334101281,	0.981039450131136,	-0.123672950299567,	-0.140131828740133,	-13.797914058713273,-1.914030716314594,	1.35605332601434,	2.48584096184779,	-2.669304324669153,	2.289369793279759,	-12.59957022859263,	0.93847348962723,	-3.000750651813473,	-6.748464919761018,	-2.998991813272391,	7.50927404965129,	-4.712789813740673,	2.583974262309686,	4.259407321635679,
					-4.302432019312597,		1.030219160973822,	-0.035401401034044,	-3.864603659100286,	11.181713062447539,	1.799128842154124,	-4.632382202673897,	-2.780991517575134,	-2.531316968742212,	10.165545659183975,	1.550622641761506,	5.402782921171298,	7.066734336942432,	3.559465053224369,	-7.838510786198628,	0.872794527931054,	-6.729399256798964,	1.851943659950421,	-3.17302307338725,	0.303477456308984,	-7.294328632117977,	0.431243357642238,	12.108553118909567,	2.785512313731942,	3.951422589853138,	5.216571541524427,	-14.01807799640241,	3.680618250481408,	10.312528175880152,	9.072426201364811,
					-5.532986492249091,		1.368157626742091,	-2.996278911375891,	1.180587738377175,	-1.172736098947577,	-3.033440537456964,	0.240827440148848,	1.274554856316978,	3.664070614586986,	1.450239057462672,	0.43774922918318,	-5.139121137322196,	-2.184239731700786,	-1.722673663384784,	5.003903006525603,	1.555677376370723,	4.592628073610951,	0.031529946446351,	1.962038675057533,	1.311519327333439,	2.97144042923956,	4.358628571380574,	-3.02091040718656,	-2.026289674016738,	-2.179100342988682,	0.199561404454555,	-0.642268764969934,	-0.48430217469127,	0.867697193885426,	-3.428256695897337,
					 4.749688683748538,	   -3.013096235466324,	-0.896473471506158,	-5.404408901826174,	3.25190012448197,	4.700501169041437,	-0.485841922084629,	2.129019854577554,	-5.743986607455017,	5.05072704099386,	5.290426760843522,	10.017074714718186,	4.109783454482344,	-2.171588999232304,	-9.143973237995885,	2.158096752256321,	-4.288300573083361,	8.440796859622568,	0.622933708201643,	0.366857770589574,	-5.372666211859802,	-6.422211641960874,	12.41021882450194,	3.749357041671196,	2.769912683036556,	3.508222243674678,	-5.740173772592829,	6.606652001961278,	5.630677773801195,	6.253155297611987,
					 4.559034813600619,		0.191335026648024,	-9.72469888506327,	16.676435885179576,	-11.815244699143054,-2.963619615334862,	2.644195062564698,	-3.504534753584204,	1.539473850852911,	3.24795330924284,	4.136178478443613,	-1.415042231009744,	0.180777361594801,	-2.516794720186608,	6.160828524988144,	-6.794575512958723,	0.075817729728995,	0.72736717628741,	1.668305542072184,	1.253458327957929,	7.270581180009739,	-5.020680731171347,	-10.710260791368778,-3.482314899976028,	-3.159956937857408,	-5.264233710547034,	7.244641579264396,	-10.641144576600027,-0.028015125221679,	0.21956976936331,
					-2.551308504381034,	   -5.624763316256503,	5.82275011984547,	-18.83984795424589,	2.287665332808314,	3.202650930764413,	-0.143157181428193,	-1.939337105017224,	-7.297486396599838,	4.714811455331595,	-2.285923849103187,	1.571914512358247,	1.18868883861133,	0.665125048665022,	-3.62112489105088,	7.315055227559002,	2.59208112683563,	-3.604968061282964,	-1.269251512788574,	-4.603628537664914,	-6.186864603084382,	8.62584019419564,	15.640620254332642,	9.339712043883617,	0.70056492461347,	8.033185101455041,	-8.984569662115023,	8.756788125840803,	3.000294638756253,	1.55270194363742,
					-3.861290375479539,	   -4.675448372631536,	9.251215593601152,	-23.607840924556356,-8.695565550492798,	-2.989076129194713,	-4.739435400680438,	2.835678457877207,	-0.098166653883445,	-12.599368055638564,-10.371683803332736,-6.880266107606954,	-13.323520170751154,0.836643098136934,	5.174040794619552,	10.49263721553011,	6.802053133291294,	-6.116168624020712,	0.612168202208346,	-1.561678744412428,	-2.961017400369882,	14.555633724082611,	-2.408921040101399,	4.164763222501917,	-1.288537113083328,	0.52492159991554,	-0.419743809901388,	6.847306921165118,	-2.417811780641292,	-7.702891475003848,
					 4.161137142387705,		1.482037717792366,	1.287113176047423,	-11.780576083757202,-13.704438843176279,2.252970644465878,	-4.628978648000722,	-8.44852567895537,	4.501241923053804,	3.218082210067639,	-9.096692746700437,	-6.359766478822383,	2.458766877052462,	2.747239663468253,	11.352826871439879,	1.690071756894771,	-4.94464758404481,	1.287478245120863,	-5.514465163301222,	-0.436320463384376,	-2.460885613501708,	-2.766872615896895,	-5.244256957948294,	3.839764805067356,	1.974486773795782,	-3.850467595501656,	-5.719184031653332,	3.112555194710462,	2.191998679485594,	-0.13026077572474,
					 2.105310692725196,		0.544816987896791,	1.846346039423678,	-0.509784805488332,	-8.19139781918348,	-0.226849791351708,	-3.085179788781892,	-5.699211118481947,	3.293594390108838,	-2.909444711189409,	-7.764958328853763,	-1.166897030507534,	3.020313808115756,	6.799166924533074,	10.7746541697421,	1.525039302686581,	-7.554231411053715,	-0.587013107919599,	-1.300759655302306,	-4.080716282648349,	-2.186465568681216,	-2.406484706468079,	-6.958047179121224,	-3.235753723041708,	-4.304227928343334,	0.206370537347841,	-2.625027214135385,	-5.715311685851154,	1.3755895996309,	7.31396280189546,
					 4.460614374892582,		3.19529761978484,	-8.190318873976533,	17.720929604353678,	1.079903507675288,	4.032046572169589,	6.846170634331792,	-2.990923968785385,	-1.01384879195201,	4.210550185586089,	0.764711025819911,	6.307647053631859,	6.791811206494187,	1.358857762637734,	-1.624613814301878,	-10.150256933841442,-8.955086516370987,	2.41129571860055,	2.991835863170325,	-2.084105485259767,	-0.387882836033353,	-12.037911290804784,0.784781445004331,	-3.51258593199461,	-6.358051224678802,	2.354270933909405,	1.762978551917006,	-7.508929712507494,	4.153956520027669,	8.430589071222315,
					 0.112995451436564,		0.371936786139806,	-7.025568330781,	9.769013689448464,	-0.640793257766108,	-11.677067837314976,1.451572748927877,	1.171502164469018,	1.692647658091279,	-0.881205326796837,	4.268282553052323,	-5.637459471007516,	-4.897450001353112,	0.171735893079777,	-0.9211330468045,	-2.490514871584582,	9.607046944744821,	-7.206797204798768,	4.349647727744751,	4.621339140117586,	10.832359506208546,	5.100626759149631,	-4.076131311364439,	-0.932775487935339,	0.50265512140222,	-8.6858164471001,	15.294166113376837,	-5.994248698329602,	-11.694453405846096,-11.801285777570579,
					 3.672120136902007,		2.62662795338849,	-6.295270647326517,	-1.069859934951232,	-3.811330299405138,	1.594900688552953,	-0.822649421610342,	-2.996102354897966,	0.011410712161871,	3.804973955584018,	0.29095969601554,	0.154412566421657,	6.009123692794804,	1.048840941857638,	0.1142053347247,	1.041139886749876,	-1.766488251223224,	-1.232261508678568,	3.296071326639848,	-2.373608140335303,	-1.250158758539599,	-0.720873134553766,	-0.615677318700518,	1.403259047870607,	3.005529442348132,	-1.215626145907597,	0.042094269477194,	-2.231879359014662,	1.611360878893429,	6.469735186892669,
				    -5.818552929715837,	   -0.916929571232854,	-0.366611990060092,	-5.12995032472354,	6.905064130414796,	-6.544579871223458,	-7.16220048221164,	-1.218392721965018,	0.028386972148047,	13.304659303178061,	5.212031101975595,	-0.198414575621711,	2.043938045553383,	-0.295480321457095,	-9.738766031154933,	4.373893439532715,	5.133821298601127,	-6.818797238217159,	2.032166191824439,	1.299068415608013,	-5.282486677908174,	8.79704452443048,	12.849891231025046,	2.787156804154204,	6.225881805493842,	-4.429387659772509,	-7.4036051874247,	3.478946685666019,	1.632891481413625,	-1.105751993528384,
					 3.486878591381191,		2.633938629834198,	-3.834544259817514,	6.338661537296378,	0.08440220487435,	0.891537452927858,	7.386752241464462,	-3.143341265990022,	0.17569569189933,	-1.189840684944929,	2.063745656499299,	-3.873741753209196,	7.631037421790815,	0.870407519991694,	5.416923136109038,	-4.796174802688587,	-5.441484022053353,	7.113220057014851,	-4.021007101784125,	1.093337823554031,	-0.723713415910556,	-11.778856908851662,-8.947505317275446,	0.371697970006654,	-3.368349776966538,	4.657443083154591,	0.453955538023004,	-1.740701616944006,	-1.65220541740956,	1.029317693975664,
					 2.46194490699664,	   -0.336732006333566,	-0.552403825578577,	-8.452671777634976,	-5.633844858472623,	4.461702367049373,	-3.779157969724202,	2.769245822243623,	-1.006803537946152,	1.372993145527169,	-2.883759917737196,	3.935344741349428,	1.588807880940938,	1.666332742486905,	-3.345107247615156,	9.018878681488209,	4.966343941267382,	-2.378406115718362,	4.984115491643569,	-6.369451753840427,	-4.810457553048149,	4.695631510723671,	8.870216904135045,	1.851266423773728,	0.47853186190453,	2.284171420203474,	-1.699791507685024,	4.11585412102773,	2.079681507808699,	6.064422880045283};
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
	  y[j] = 0.;
	  if (nx == 10)
	  {
	   for ( l = 0; l < nx; l++)
		    M[l][j] = M1[l][j];
	  }
	  if (nx == 30)
	  {
	   for ( l = 0; l < nx; l++)
		    M[l][j] = M2[l][j];
	  }
  }

  for (i = 0; i < nx; i++)
  {
	  for (k = 0; k < nx; k++)
	  {
		  y[i] = y[i] + e[k] * M[k][i];
	  }
  }

  /* objective function */
  f1 = 0.;
  g1 = 0.;
  g2 = 0.;
  for (j = 0; j < (nx - 1); j++)
    {
      
	   f1 = f1 + (100 * pow(((e[j]+1) * (e[j]+1) - (e[j+1]+1)),2) + pow(((e[j]+1) - 1),2));
	       
    }
  for (j = 0; j < nx; j++)
    {
      
	  g1 = g1 + y[j] * y[j];
	  g2 = g2 + cos( 0.1 * y[j]);
      
    }
  f[0] = f1;
  g[0] = 0.5 - exp( -0.1 * sqrt(1/((double) nx) * g1)) -3 * exp(1/((double) nx) * g2) + exp(1);
  
}

DLLIMPORT void
C09 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j;
  double f1, h1, e[nx];
  double o[30] = {-41.03250252873486,	-35.70280591875908,	-48.66938576680659,	94.51946988004894,	31.68700466174738,	99.69508270219342,	30.778279925351967,	-31.041222172110807,	-46.21010370947247,	27.26190010072706,	-2.093622677920422,	22.246274570582585,	-42.887366421312436,	89.88377145577851,	-6.731523713182725,	97.86439204258224,	49.49993772881544,	23.210695390854696,	-81.36716857155828,	-20.15688556597543,	36.692155371634726,	44.37408948075327,	-15.984549833405907,	-49.68391424581281,	98.3715576810595,	0.127593155843627,	61.709914317965655,	-84.0189999580673,	-35.39565398431638,	-5.143979333218638};
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
  }
 
  
  /* objective function */
  f1 = 0.;
  h1 = 0.;
  
  for (j = 0; j < (nx - 1); j++)
    {
      
	  f1 = f1 + (100 * pow(((e[j]+1) * (e[j]+1) - (e[j+1]+1)),2) + pow(((e[j]+1) - 1),2));
	       
    }
  for (j = 0; j < nx; j++)
    {
      h1 = h1 + e[j] * sin(sqrt(fabs(e[j])));
	      
    }
  f[0] = f1;
  h[0] = h1;
  
}

DLLIMPORT void
C10 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j, i, k, l;
  double f1, h1, y[nx], M[nx][nx], e[nx];
  double o[30] = {-41.03250252873486,	-35.70280591875908,	-48.66938576680659,	94.51946988004894,	31.68700466174738,	99.69508270219342,	30.778279925351967,	-31.041222172110807,	-46.21010370947247,	27.26190010072706,	-2.093622677920422,	22.246274570582585,	-42.887366421312436,	89.88377145577851,	-6.731523713182725,	97.86439204258224,	49.49993772881544,	23.210695390854696,	-81.36716857155828,	-20.15688556597543,	36.692155371634726,	44.37408948075327,	-15.984549833405907,	-49.68391424581281,	98.3715576810595,	0.127593155843627,	61.709914317965655,	-84.0189999580673,	-35.39565398431638,	-5.143979333218638};
  
  double M1[10][10] = {-0.040348736997622,	-0.57547478301341,	-0.389765935131311,	 0.140885590781398,	-0.144670835908614,	 0.115450535800564,	-0.518304793509814,	 0.149470047989466,	 0.386138410795004,	 0.145230906380518,
                      -0.065866355431932,	-0.257122057117828,	 0.298076832606074,	-0.339838329245853,	 0.36335902728584,	 0.69140513648482,	-0.028135015592,	 0.214592766458436,	-0.21337789362989,	 0.150888625576118,
                      -0.154282201350543,	 0.233990300992969,	 0.196071677766854,	-0.516011967110319,	-0.265721705059327,	-0.060905234855331,	 0.017107816544837,	 0.459602625258773,	 0.548125243387881,	-0.174490925899168,
                       0.363857337521185,	 0.622123871321307,	 0.051207493885242,	 0.281214293456459,	 0.077610534696611,	 0.38475834924149,	-0.410410905293451,	-0.035659107285799,	 0.245258564359423,	 0.122242429111897,
                       0.050671935660746,	 0.081648277010661,	-0.034403618638332,	-0.604379533928053,	 0.029715665982435,	-0.255779368776897,	-0.321832198773717,	-0.454789288464763,	-0.04205042244723,	 0.49580649289475,
                      -0.580165394752893,	 0.155095038022222,	 0.210065625307939,	 0.265731671126386,	-0.481942328396859,	 0.107406464626288,	-0.031135086609527,	 0.076014134025855,	-0.182793563791557,	 0.490558019238156,
                       0.525119522958187,	-0.007317154673771,	-0.078860784151735,	-0.118095618729855,	-0.388828033497333,	-0.11024307003898,	-0.140281776355321,	 0.496093855143328,	-0.517431971433034,	 0.084650093567346,
                      -0.221934029584865,	 0.08937666134435,	-0.161579047653623,	-0.202383925865339,	-0.358394121525824,	 0.305489267359872,	-0.319803594563591,	-0.329350210528224,	-0.279367850055518,	-0.604257992994783,
                      -0.14024729892381,	-0.085950562359788,	 0.562192927749687,	 0.15621897836716,	 0.259175107289986,	-0.401255905586421,	-0.564318107548709,	 0.125407586464797,	-0.135691838706447,	-0.227388734136487,
                      -0.392433919094433,	 0.338788001793312,	-0.569620515414919,	-0.064134166835177,	 0.436408519589215,	-0.115926326668514,	-0.12994296127687,	 0.36903024504463,	-0.213067396847211,	 0.016735182121047};
     
  double M2[30][30] = {0.210498733952046,	0.044384555963486,	0.039557467453157,	0.322626150860574,	0.090728331050138,	-0.046559513284792,	0.279058079389439,	0.216086043131122,	0.001910966340658,	0.005653042988124,	0.055129408353881,	-0.157826900224939,	0.126895165086409,	0.21964276539513,	-0.030777527838514,	-0.174795699173724,	-0.071684319926197,	-0.435002022420347,	0.300879515782067,	0.196965690878292,	0.015408513092551,	-0.088767209425526,	-0.056721005316589,	0.004563253603378,	-0.411103445073825,	-0.098798851715865,	-0.017178459384374,	0.223973235768929,	-0.038630814336146,	0.153324298640425,
                     -0.123853898371964,	0.006208844977804,	-0.196968610000223,	-0.297886862654356,	0.337304789619692,	0.151336922415474,	-0.190737243250796,	0.371272076371965,	0.05154807935738,	-0.089924110414285,	-0.147609151282806,	-0.083802701820601,	0.017052091139248,	0.207360614681,	  -0.014730657062048,	0.030357000089238,	-0.38493302429957,	-0.098471468276102,	-0.24989513579197,	0.265831026621616,	0.039327358400047,	0.102952558500907,	0.112835401766515,	0.075442015984702,	-0.050054414064672,	0.152147800707443,	0.275356821244483,	-0.075104525195784,	0.130811841464527,	0.128154556261642,
                     -0.247552776888796,	-0.170900469984963,	-0.025609465501807,	-0.074857181493926,	0.06402729466598,	-0.249589575845155,	0.291141404096232,	-0.151955001483896,	-0.182101792706067,	0.177528281451576,	-0.11080027107009,	-0.101265961425373,	0.05885945181901,	0.282705041568106,	-0.075385821998282,	-0.183086148754718,	-0.03660323576297,	0.095170386364688,	0.004340336079074,	0.000556182984035,	0.321477491995385,	0.031769482356446,	-0.111377507159358,	0.532122152715201,	0.088882029439331,	-0.098799193147706,	0.101408217806575,	-0.110636423867126,	-0.211274352044764,	-0.155079279400244,
					  0.025663646265114,	0.102509721975959,	0.309345681084264,	0.070334750076729,	0.097241604458889,	-0.273266320148514,	-0.239907149554807,	0.150740659614263,	0.069994908090163,	-0.039122490587809,	0.125893036315579,	-0.340093749710236,	0.154051275851787,	0.186934934550147,	-0.25121208048304,	-0.196077026994064,	0.01583365232178,	0.55909380072088,	0.112181997526451,	-0.008728203934299,	-0.217367189352171,	-0.106529307174376,	0.050536269466879,	-0.006551233713265,	-0.045903154193401,	0.167087870245007,	0.002122466601521,	-0.012682827041684,	-0.002595974426726,	0.093386409335028,
                     -0.096757718998012,	-0.039650722973667,	-0.056221933017481,	0.247299467670382,	0.12500615760951,	-0.129535632819352,	0.037407381782829,	-0.049321379462225,	0.022699926035277,	0.192965409321344,	0.104996464498579,	0.085577579883565,	0.078833431392308,	0.19343561654434,	0.253727682682793,	0.025915952751218,	-0.084868665088399,	0.037854288550344,	-0.393242682132416,	-0.312008732104883,	0.022684882865586,	0.127011588278839,	-0.048595771065928,	-0.309159369729801,	-0.363341449374355,	0.16665805071768,	-0.056515345289132,	-0.298609174881293,	-0.294119559817135,	0.099285471881439,
					  0.043186472508942,	0.001771226886988,	0.14263426111345,	-0.026446427851299,	-0.042202844595988,	0.229858934929016,	0.192708259881167,	0.454739275512023,	0.078993562199931,	0.012272017371985,	0.208615477072962,	0.0286479351207,	-0.078639302217307,	-0.271449720411795,	0.183880260881944,	-0.221305977752936,	0.090741804187672,	0.221668479563272,	-0.18125553211922,	0.202526121479001,	0.143690682699279,	-0.009428483121244,	-0.138122988901157,	-0.0087984112929,	0.180843519453226,	-0.167186223826231,	0.059308954954177,	0.044175554473605,	-0.451367400847036,	0.155461979668354,
					  0.208459638473921,	-0.192313493572805,	0.042799453883608,	0.056319917449526,	-0.064050781971354,	0.336443527835829,	-0.024913686145588,	-0.135392681180607,	0.084208982811827,	0.19368687774262,	0.273506736028856,	0.161025819114185,	-0.145878857750618,	0.175226077989248,	0.197067036614125,	0.01612829628023,	-0.266892552385116,	0.294523656999125,	0.111195525470887,	-0.201292974303023,	0.007989116024197,	-0.133381335708404,	-0.05978698001368,	0.163532731543214,	-0.166898927792151,	-0.069407809244429,	0.410416043355545,	0.195220789227849,	0.206696988670138,	-0.030109638400114,
					 -0.161888866215218,	-0.477833679054076,	0.090201553328432,	0.197276529552719,	0.257525091427261,	0.234933865087851,	0.111554961171882,	0.039671046122422,	0.1024028037035,	-0.275023229663029,	-0.179789894147703,	-0.149367349549056,	0.097199867696211,	0.038487537865377,	-0.102826054337925,	0.041005419958829,	0.071428957044728,	0.133047965356434,	-0.271733080060097,	-0.07745323185521,	-0.074759189714073,	0.047497229049009,	-0.165726777593199,	-0.084379708142798,	-0.046302009416911,	-0.250215681879312,	-0.226883004983199,	0.246816548042778,	0.174568318097348,	-0.215049387958273,
					  0.163861486371016,	-0.148103013020227,	-0.198506174180913,	-0.04219384123679,	0.118302213986748,	0.022695570191254,	0.206707310041736,	0.156232002478571,	0.093575716314624,	0.487161837511012,	-0.277679678378239,	-0.05898824271195,	-0.101340463707747,	-0.197187024207523,	-0.356221119308529,	0.175907621024382,	0.025724776145916,	0.177555844621935,	0.186546393359421,	-0.011515740909936,	-0.063280757601228,	0.108572545320813,	0.250175342159778,	-0.217188740737622,	-0.118288673330692,	-0.018858445496624,	0.125813534590454,	-0.005766830114285,	-0.173770830530608,	-0.204076434641454,
					  0.076726374752626,	-0.059157318075244,	-0.109120969315065,	0.281735964889155,	0.113701355600812,	0.057934126040283,	0.056930714392195,	-0.260311629272444,	0.066131852169431,	0.254150636558942,	-0.123595487021829,	-0.068770016151727,	-0.084370591918571,	-0.210531372886378,	-0.058314753673756,	-0.373308427361442,	-0.015030712250411,	0.013086120163669,	-0.210199938641698,	0.044179063442584,	-0.090836039745107,	0.110863603159718,	0.197449444025479,	0.163833987692559,	0.172463370094917,	-0.02624766621562,	-0.075091307788291,	-0.035678286150929,	0.258868590341026,	0.540009857641777,
					 -0.11448537731886,	     0.158421318146668,	-0.119175728122649,	0.201903441501447,	-0.009316901256506,	0.173542979966456,	-0.234634060687318,	-0.135893056643097,	0.271225318340463,	0.108809056996355,	-0.016309462418078,	0.118496233811428,	0.304052823739158,	-0.007722437001817,	0.094448421400381,	0.034726127685042,	-0.116005525261297,	0.078981290570637,	0.205206605235178,	0.30369188618657,	-0.312746271441503,	0.393986794526704,	-0.195899452039796,	0.20494103596369,	-0.018949028418705,	-0.184962367629022,	-0.079402591539207,	-0.121729951631301,	-0.181982754615953,	-0.156530779671702,
					  0.162253760728648,	-0.153789438331871,	0.00868657051539,	-0.131911170907241,	0.420552377770407,	-0.216321029385655,	-0.133791045486745,	-0.270383692536091,	-0.113959519847022,	-0.182238016801448,	0.191497999470082,	-0.054919230163731,	0.162994884573224,	-0.222520719869188,	0.021240982443138,	0.090745017688942,	-0.291288801107928,	-0.047608464418265,	0.152396018978015,	-0.070526756136424,	0.048450789083476,	-0.045567922857345,	0.102798772566309,	-0.159656473982117,	0.118251926660962,	-0.430675707603667,	0.10458086074914,	-0.029209095590176,	-0.242559117346188,	0.146082148041515,
					 -0.054769889978099,	-0.102998778221723,	0.064729032089379,	0.181703388132909,	-0.238051881438163,	0.125211106412204,	-0.301322664395015,	-0.055687348687259,	-0.039615420818266,	-0.10893447819021,	-0.225903659932295,	-0.168752128472236,	0.050214382872752,	-0.209623736459376,	-0.021152472752855,	-0.530138693435876,	-0.134544018857329,	-0.145183011013022,	0.052406331352567,	-0.066953538369538,	0.210839727968681,	-0.005790710509523,	0.040900628077853,	-0.219106039109813,	-0.058779545307731,	0.037152749763887,	0.306738266478922,	-0.155410315881546,	-0.059669333754521,	-0.307937539980894,
                      0.188677164396131,	0.102763453891941,	-0.392205809826425,	0.023274604305339,	-0.241062713234987,	-0.134335764348244,	-0.156920883882407,	0.118394352690385,	-0.242783527480707,	0.148199620429226,	0.038598382023358,	-0.373777385965017,	-0.079990650844341,	0.109379832985269,	0.276235130978874,	0.000424181313047,	-0.1581803206613,	0.194537934564581,	-0.112037113974561,	0.092669956020601,	0.151181460492394,	0.064779413736991,	0.03298441610138,	-0.105713078293658,	0.026477488720875,	-0.301872238837486,	-0.304572846125097,	0.129303116825904,	0.150275305655397,	-0.143819273917584,
					 -0.121136819961029,	-0.280376857590378,	-0.142884824324944,	-0.234336987516145,	-0.27318548804741,	-0.062906552289143,	0.117125592225031,	-0.111153019559446,	0.170636020457398,	-0.049474387767955,	0.250337970843838,	-0.015737111315197,	0.303098653510777,	-0.031695841766391,	-0.018294649882712,	-0.004853390742363,	0.288923483741941,	0.102932886997556,	-0.030117891708216,	0.348873109957197,	0.107864455557603,	-0.053217559061395,	0.155554070063422,	-0.131389140271268,	-0.306220365198726,	-0.153022880982604,	0.128394915701578,	-0.254920058505309,	0.228391386551728,	0.124793864045053,
					 -0.085458356559741,	-0.06749024827502,	-0.243684986433717,	0.195223151576616,	-0.056144203577952,	-0.107022717570903,	-0.119766313023139,	0.21180214818079,	0.286641525002163,	-0.256687343688466,	-0.016698212375744,	0.168676200561914,	-0.300510419700627,	0.3859169863873,	-0.025097350370833,	-0.064878242312045,	0.223840463303938,	-0.013692765327541,	0.191347293229108,	-0.221476004310888,	0.014539395850687,	0.108928515315896,	0.2763380292334,	-0.022071088238979,	0.190680276913542,	-0.305290419919566,	0.107640319223234,	-0.104538877590241,	-0.084705533603217,	0.108822927690725,
					  0.359256748293047,	0.154976198577344,	-0.116153265766918,	0.13931677738968,	0.374496005165856,	0.178417709752365,	-0.020215045948477,	0.0511359434473,	-0.30173528700312,	-0.216545463965152,	-0.113137661147475,	0.186762444883836,	0.040082745946815,	-0.053364283388025,	0.065488033743007,	-0.033154988554239,	0.317998692979354,	0.247815755943833,	0.126243283202638,	0.038451263306162,	0.256900869660439,	0.043331197504268,	-0.051702015143296,	0.115290293077177,	-0.162878255904405,	0.042941144091639,	-0.0273285865418,	-0.345298257763101,	0.15936874911257,	-0.076890125653739,
					 -0.28099424578992,	    0.107396814515739,	-0.084563105000033,	0.251259020314969,	-0.046244227618743,	0.194849917362354,	0.105731360526473,	-0.116729435444227,	-0.125871612130733,	-0.004143188817115,	0.031303723499165,	0.193842070959737,	-0.071047584389393,	0.163798237107731,	-0.33103883422486,	0.083042404997121,	-0.314536638066646,	0.1850656428806,	0.139857282060989,	0.258138857521682,	0.241402804816099,	-0.267773012822818,	-0.136618598358345,	-0.352889529882469,	0.178761358680642,	0.004675588386463,	-0.130523685747766,	-0.11010510100568,	0.012337514111924,	0.133039188998738,
					 -0.136214748186763,	0.061446441408168,	0.124443001628158,	-0.384194680239079,	0.161386673633437,	0.05151848059208,	0.050237897866986,	0.092332554624287,	0.025301015752734,	0.144267170372807,	0.177218756700414,	0.330110661903483,	-0.032723550578364,	0.032862846981569,	-0.039329546595698,	-0.479455648611786,	-0.142384919826993,	-0.00804128544337,	0.153527223636046,	-0.147592550588846,	0.01671488256034,	0.153461668336777,	0.143391962131602,	-0.1032423296903,	-0.127806420761444,	-0.112212283814506,	-0.419393741016172,	0.011554752050117,	0.174489436742579,	-0.152583142805368,
					 -0.183525414815911,	0.084264423476034,	-0.513582573163132,	-0.060641305770964,	0.096244159556264,	0.049715888666474,	0.311001693872411,	0.001259440460654,	0.036651495187505,	-0.187364828692437,	-0.017792472149735,	-0.108962196548542,	0.106923649625955,	-0.137418200183617,	0.231554866808663,	-0.211864650236558,	-0.056173351885998,	0.108205208097382,	0.152251721125532,	-0.172564127758839,	-0.379707703841598,	-0.399495209658996,	-0.017301373440465,	0.016739053799758,	0.035848677241745,	0.150058535685014,	0.019465311724744,	-0.030054112339037,	-0.049980094722222,	-0.078081830537862,
					  0.061058425410664,	0.042041509977416,	-0.211003741431923,	-0.126388800908604,	0.039219152461988,	0.225495863827954,	-0.366358041819373,	-0.190018182245224,	-0.135422744295414,	0.106462362604256,	-0.028597656153562,	0.151442873263496,	0.108762194743749,	0.202895035408, 	-0.220198514387979,	-0.145116392843135,	0.287960518621411,	-0.046429895952516,	-0.236435128849732,	0.064337841563859,	-0.044861474741858,	-0.323541240367847,	0.116777979642275,	0.058194390691809,	-0.143859430803049,	-0.058357266848021,	-0.06663691339304,	0.323975481839132,	-0.363821240073463,	0.025044920981486,
					 -0.189525638545991,	-0.006677446894394,	0.040135587178237,	0.030562197515064,	-0.081557175019313,	-0.35988601916995,	-0.046748366964196,	0.052796424347975,	-0.293965333147152,	-0.107256786396328,	-0.266428993150317,	0.331112621223704,	-0.3240691448606,	-0.183930905848232,	0.033931266862913,	-0.056733070481899,	-0.071906584046074,	0.165910393063134,	-0.066596131882292,	0.187535095996836,	-0.282573695097042,	-0.012822431812993,	-0.130628684496259,	0.019603565202997,	-0.36530186945985,	-0.218948877174082,	0.15928161680357,	0.117469132881907,	0.02739594774293,	0.086724839893498,
					 -0.046415954902964,	-0.160644004446126,	-0.033524440660352,	0.07500744681351,	0.016322145454599,	-0.107804845719038,	-0.239974742220443,	0.045234085507995,	0.410025327436819,	-0.041785955831231,	-0.088824232512646,	0.019324971910103,	-0.164179563969319,	-0.274883654548913,	0.08344816321592,	0.134361131744622,	-0.168293304036166,	0.050119827090831,	0.107998968576299,	0.024222465405286,	0.333568438641683,	-0.314273943234102,	0.088627173413873,	0.307987145180008,	-0.25957029953184,	0.139693331842536,	-0.366318566467329,	-0.024315207215651,	-0.097866140810133,	0.031984120313315,
					  0.414611908814294,	-0.37112136873643,	-0.073866553818035,	-0.29087757946088,	-0.217072217367287,	-0.029123302474621,	0.010661588246943,	-0.056648186984039,	0.052448395670158,	-0.125771363235671,	-0.323377762528554,	0.103065249994115,	0.03990538947911,	0.20892679696363,	0.025498721902253,	-0.133437428932213,	-0.116769147892009,	0.075000348696883,	0.147043486128104,	0.012254394305512,	-0.070162283643009,	0.104480173528188,	-0.343231962242353,	-0.124041674266431,	0.079443082346753,	0.192704701695008,	-0.169380089268582,	-0.054285719705745,	-0.145500023209769,	0.255395103787066,
					  0.207119315322088,	-0.320073115712564,	0.0559314734117,	0.172649138634129,	-0.011542461945528,	-0.130620764160256,	-0.10888053008216,	0.267564406009138,	-0.120890663229249,	0.202202465644977,	0.149425179881808,	0.216934380895458,	0.065653150449446,	0.041794472366999,	-0.048128520065833,	-0.017549459873998,	-0.077842831218385,	-0.198170596730465,	-0.149865167620775,	0.12634718117617,	-0.30097962077431,	-0.356324559219511,	0.015984934796442,	0.112407601721805,	0.237966910014296,	-0.056653284700555,	-0.084496688943403,	-0.372456205768623,	0.097560810635958,	-0.241013145399317,
					  0.042993730292494,	0.004956761653254,	0.053895052194156,	-0.088854185716889,	0.326910901526066,	-0.087794341394476,	-0.020802090219748,	-0.298708928515842,	0.25242600994189,	0.101197681470221,	0.07152866676548,	-0.181921564652412,	-0.505149592427631,	0.143193361309159,	0.186981040042569,	-0.133652828493287,	0.200265248087893,	-0.073752726703129,	-0.000238503991611,	0.374550360408052,	-0.050281630947108,	-0.092458775511721,	-0.205541771113341,	-0.211350594454595,	0.048295879169752,	0.061913849844292,	0.046521349189447,	-0.065574597414797,	0.000727202776555,	-0.214369198817042,
					 -0.372708113027754,	-0.273111422565572,	-0.028044496936687,	-0.031315545207917,	0.128692442270306,	0.103912301156068,	-0.317409754881132,	0.193362522820359,	-0.263946940397186,	0.328539161755314,	0.014885444611456,	-0.135231025676715,	0.012770730354147,	-0.056470973842145,	0.187010128145666,	0.06551126700651,	0.264488080744978,	-0.092362300447396,	0.374463443107909,	-0.114265316590068,	0.014321931394336,	-0.014287975486322,	-0.251977653040875,	-0.068814134318263,	0.037272928895606,	0.036847910078949,	-0.004344868007102,	0.000682914575515,	0.075677153681488,	0.26759596689543,
					  0.064818689916455,	0.284053411520265,	-0.063930667567762,	-0.055888531296039,	0.084971324574045,	-0.248553864049376,	-0.053882957221272,	0.109974358415086,	0.361665795220151,	0.212622412400492,	-0.222105881590724,	0.159407186211676,	0.277766857748719,	-0.040024212790115,	-0.045419517646103,	-0.049565963430445,	0.075309844691921,	-0.01462002387698,	-0.125901695229838,	-0.179360862877057,	0.201763873122918,	-0.220450927984847,	-0.414575162457279,	-0.112162765618009,	0.098487134259606,	-0.239965053948616,	0.170255100801187,	0.078980100492884,	0.243403068580785,	0.021368523436668,
					 -0.054279013736138,	0.018659420049998,	0.330359950213943,	0.023123143363581,	0.035090878248845,	0.025527653285977,	0.082763577820282,	-0.044575644917522,	-0.004626086242742,	0.103520181686413,	-0.432497376883502,	0.119032674935153,	0.236464940348734,	0.185294902781396,	0.510006376075268,	0.054475637131684,	0.021019631752974,	0.107026280159219,	0.091553865611036,	0.169591926725838,	0.02088417330554,	-0.183147177835376,	0.427381645911547,	-0.13187711537175,	0.138348964310852,	-0.037276342733556,	-0.010728013977158,	0.085070861966194,	-0.008940851260341,	0.001071606497694,
					 -0.001220559638941,	-0.207365392796594,	-0.23185510790523,	0.208482953784606,	0.122000548923194,	-0.322922674036945,	-0.041150767726355,	0.035241090632951,	-0.012254747396228,	-0.030675366498019,	0.216247246460075,	0.297863251529541,	0.168847156819068,	-0.082183953429559,	0.065957904193529,	-0.09572234076031,	0.040748898076806,	0.06592096841622,	0.028275231975731,	0.180261847132564,	0.167295789767305,	0.208499007714482,	0.06073181729704,	-0.09136260314961,	0.195634463938498,	0.405036010088252,	0.090356343227339,	0.443504939597125,	0.041746547462442,	-0.143522086623263};
     
 for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
	  y[j] = 0.;
	  if (nx == 10)
	  {
	   for ( l = 0; l < nx; l++)
		    M[l][j] = M1[l][j];
	  }
	  if (nx == 30)
	  {
	   for ( l = 0; l < nx; l++)
		    M[l][j] = M2[l][j];
	  }
  }

  for (i = 0; i < nx; i++)
  {
	  for (k = 0; k < nx; k++)
	  {
		  y[i] = y[i] + e[k] * M[k][i];
	  }
  }
  
  /* objective function */
  f1 = 0.;
  h1 = 0.;
  
  for (j = 0; j < (nx - 1); j++)
    {
      
	  f1 = f1 + (100 * pow(((e[j]+1) * (e[j]+1) - (e[j+1]+1)),2) + pow(((e[j]+1) - 1),2));
	       
    }
  for (j = 0; j < nx; j++)
    {
      h1 = h1 + y[j] * sin(sqrt(fabs(y[j])));
	      
    }
  f[0] = f1;
  h[0] = h1;
  
}

DLLIMPORT void
C11 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j, i, k, l;
  double f1, h1, y[nx], M[nx][nx], e[nx];
  double o[30] = {0.786412832829728,	0.224970263937584,	0.534200883186777,	0.708371248558908,	0.163080926857473,	0.768660589584868,	0.1762692231182,	0.310310542254487,	0.279811607250377,	0.825543830090833,	0.847363744014823,	0.442103825982325,	0.84951329245954,	0.523004716844064,	0.044699072032802,	0.792400388660219,	0.292824262720788,	0.178722825110973,	0.549380820517875,	0.352736549012222,	0.080102993555225,	0.853135372349337,	0.790965386853156,	0.951634097517732,	0.809945865440195,	0.313724260202943,	0.241711589286433,	0.546972335229794,	0.270900015013911,	0.389639306011642};
  
  double M1[10][10] = {0.089633918378866,	 0.512130446273224,	 0.485514077203757,	-0.252958672779915,	 0.252770541915915,	 0.282726797116408,	 0.011481584098212,	 0.501645726490125,	 0.182717825231853,	 0.031348100000026,
                     -0.280115239342013,	-0.237293103798464,	 0.161291392367593,	-0.283707496604443,	 0.364811930990744,	-0.062761689119337,	-0.739185429285342,	-0.191267363255477,	 0.163852853571301,	-0.108948351728692,
                     -0.054128359479101,	 0.280409298113112,	-0.705443683949621,	-0.251735861726835,	 0.296849031180373,	-0.090813013702513,	-0.065957070182011,	 0.30050375022829,	-0.272322162400478,	-0.303711147333872,
                     -0.452847886193739,	 0.236523261801994,	-0.24521824465,	    -0.081379588794718,	-0.24525780464972,	 0.37821495392415,	-0.18193070994583,	-0.056246704353941,	-0.093664221220625,	 0.651150911995366,
                      0.361083640107602,	 0.399352960578869,	-0.140221518169126,	 0.501290666120365,	 0.227775075396437,	-0.344871729183228,	-0.325346508438507,	-0.093040278786845,	 0.207431987018326,	 0.332909212543853,
                     -0.327366108426422,	-0.034166615485878,	 0.168579539272942,	-0.231702366911964,	 0.292800433946541,	-0.648132837341469,	 0.361448041200678,	 0.046154155969474,	-0.131239528768862,	 0.392112292683837,
                     -0.416908196358713,	-0.161816318805297,	-0.179541440127106,	 0.415157611173291,	 0.440167850594149,	 0.25787201771071,	 0.30374321406454,	 0.077672586210717,	 0.481631833482542,	-0.070029679148627,
                     -0.082769326821527,	-0.296458567384547,	-0.095392668680313,	 0.079070267285698,	-0.410370494920092,	-0.277529903950391,	-0.232372087468556,	 0.707837046116306,	 0.291065711969018,	 0.068801000678567,
                     -0.314851017910477,	 0.037408462116577,	 0.292343317100224,	 0.548829235267724,	 0.065696886904918,	 0.012681873453724,	-0.181476896332993,	 0.21693059635943,	-0.634666974725221,	-0.159748150960876,
                      0.433769285221923,	-0.520307620610873,	-0.07481810354657,	-0.026992353432197,	 0.388158769389856,	 0.286598385013371,	-0.018393693541829,	 0.231063340808058,	-0.277653756652504,	 0.413729117675976};
   
  
  double M2[30][30] = {0.213664507653598,	 0.081181994864055,	 0.109287504638465,	-0.025177866704494,	 0.022222285306807,	-0.042656953236281,	-0.064708019281558,	-0.166881530892857,	-0.049029069752717,	-0.352822537935909,	-0.10560659182506,	0.172325114774526,	0.151840000333581,	0.226141562503423,	0.098785038088718,	-0.038046518396688,	0.064354476751985,	-0.397839588660246,	-0.035803778238277,	0.143522858437253,	-0.132896510459094,	0.0776878752635,	-0.230960330142614,	-0.065023068412763,	-0.324799719792717,	-0.394410999051323,	-0.064406717392709,	0.113744829639383,	0.311387845557846,	-0.083797609752818,
                     -0.271700088866788,	-0.019398284664685,	-0.147690031630542,	-0.14646895298845,	 0.009734059809619,	-0.360263733874311,	-0.08446685711877,	0.074923689193188,	-0.163935979878233,	0.235507396752789,	0.109294373655602,	0.275570585394534,	-0.342781812122196,	-0.097283082956871,	0.000965683202336,	-0.364649787402838,	-0.120741535426983,	0.081333703172679,	0.187707474611139,	0.012291646647864,	-0.24973965974932,	0.147605133728092,	-0.236914164871624,	0.140203023828278,	-0.090596746744275,	-0.079951967559402,	0.041339061451822,	-0.143083898074293,	0.215812964283571,	-0.099342527132328,
                     -0.067990719526256,	 0.265087739087109,	 0.069641500406529,	-0.075142020476545,	 0.342414425640308,	 0.193955025198242,	-0.119407721016019,	0.182485692744089,	0.078232269648152,	0.201926600459772,	-0.118697625348229,	-0.043262798962201,	0.372144060227865,	-0.015090449753815,	0.191694088533503,	-0.158605317529149,	0.112058863065475,	0.02590233184065,	0.203619627876814,	-0.064290403099129,	-0.02432596986466,	0.049145901961444,	0.229396848321773,	-0.05297004437931,	-0.065000670782875,	0.070701153673056,	0.453255361840545,	-0.083935114638238,	0.31146341510963,	-0.112829838156669,
                     -0.030968898341742,	-0.050888797506771,	 0.030830254756601,	 0.04178819557194,	 0.065658071283464,	 0.450923351464843,	 0.214706791003811,	-0.323207360495052,	-0.008354103400074,	-0.053133505933914,	-0.195866183390291,	0.187102471622905,	-0.206804305716109,	0.101819425389,	   -0.11082652699642,	-0.39711167566239,	0.123494232660844,	0.053736727436837,	0.096036627871671,	-0.019258600848078,	-0.219821668806651,	-0.253908923606591,	0.005089036974723,	0.127991628463459,	0.037075803520335,	0.010378302018138,	0.143684554656654,	0.095817813086981,	-0.050150939862002,	0.381333412629458,
                      0.226288151720664,	 0.24606116722381,	 0.106911720534849,	 0.47292916025144,	 0.080821596642439,	-0.106639568044331,	-0.25871955956032,	-0.067303307998019,	-0.223306723802896,	0.118314382149731,	0.092493331574002,	-0.160569418944115,	-0.239227946040776,	0.159833124584156,	-0.097589784005531,	0.088561998405886,	-0.176607551065602,	0.220391576923025,	0.118673673892537,	0.172529373109131,	-0.052521621702833,	-0.302376571169939,	0.057527555491466,	-0.051198984930294,	-0.151934969640591,	-0.20288907211878,	0.237694257469852,	0.011731349236642,	-0.121683054008454,	-0.077562196214513,
                     -0.023341124631582,	-0.106367398061812,	 0.139185062166589,	-0.023708842343116,	-0.122924349219742,	-0.317270751931269,	 0.09085932216237,	-0.004003755978159,	0.081504361166746,	0.051004055378783,	0.087122807098326,	0.065197475901265,	0.326987038415912,	0.149191719081344,	0.059533213153922,	-0.289471752269275,	0.036292592579316,	0.051991150593147,	0.423393392470416,	0.14243832552759,	0.26694616322671,	-0.033149461153889,	-0.06238762331634,	-0.017742808969348,	0.224077199443182,	-0.164572449247675,	0.081131000428636,	0.411086190636973,	-0.270016145919628,	0.025440356389857,
                      0.217340969946372,	-0.010887941365408,	-0.105414165411544,	 0.028640113752392,	 0.245192353428576,	 0.123453698955525,	-0.22027448510549,	0.080008470401683,	-0.200064078714725,	0.409080331693645,	-0.01164832823722,	0.149285163400367,	0.212696285382057,	-0.036842592163519,	-0.184563269192621,	0.099675386172013,	-0.104962991127113,	-0.351644037772175,	0.003612814494479,	0.119290352639962,	0.014038386652626,	-0.078680586178529,	-0.257539407999236,	0.356517750088968,	0.065999684745291,	0.244698740520543,	-0.16125727875757,	0.200412631256186,	-0.047032406403128,	0.093230368282809,
                     -0.308047033323461,	 0.302782029048974,	 0.0322661459595,	 0.106587658429326,	-0.168271630981503,	-0.070035690780841,	-0.051571249957414,	0.097566654836796,	0.098375409745765,	0.151603976234746,	0.057525783219635,	-0.286426352771457,	0.024343824914064,	-0.169780687940365,	0.022380508340654,	-0.030982311876094,	0.415717134652659,	-0.197521326266871,	0.088420077973385,	0.011114954697741,	-0.263872664453069,	-0.375124011890858,	-0.011430439277577,	-0.07452629391033,	0.016003087509299,	-0.065727200479196,	-0.373774336560803,	0.105840318864163,	0.100418169473233,	0.073219551853995,
                      0.200163577534198,	-0.039678659465808,	 0.379527614131999,	-0.099745969482936,	-0.221373690414668,	-0.148184040663515,	 0.218923185321619,	0.16342688952909,	0.106160271957917,	0.128647167415555,	-0.263722004680904,	-0.073799506832126,	-0.130373260973961,	0.05112747364289,	-0.275651806010854,	0.164362590475763,	-0.193891035029316,	-0.231705892488554,	0.203407120866966,	-0.180088567449336,	-0.217043829626228,	-0.065298093403581,	-0.168646979873782,	-0.249526662066186,	0.142398466204126,	0.184373897375203,	0.214617996769777,	-0.037763990107245,	0.153370753506811,	0.029960427580481,
					  0.027381106799167,	 0.025298590700846,	 0.085102913098931,	 0.235161900850573,	 0.088822124808788,	-0.147746689766744,	 0.287007437228783,	0.059680973101153,	-0.083383065195545,	-0.031229323155654,	0.031553099382079,	0.40509260167075,	-0.066928120228784,	-0.029895161415616,	0.160569988999854,	0.16678557709598,	0.254241427727434,	0.231808030036861,	-0.219633335492758,	-0.018225943045591,	0.205429075567088,	-0.287803693680246,	-0.159043658666998,	0.00879409803725,	0.165691311194281,	0.193758433635177,	0.054989913382989,	0.187140153188654,	0.381913634751314,	-0.148889172210388,
					 -0.193804968887996,	-0.065126964033178,	 0.301214940522026,	 0.235589681539659,	-0.103550074605781,	 0.108383273427244,	-0.105180685554545,	0.023625536573582,	0.01996270869354,	-0.197178099155744,	-0.005579002923688,	-0.105996290889411,	-0.201484156798754,	-0.016580477043595,	0.096437307973893,	-0.265258984515337,	-0.038285680241242,	-0.297437900623478,	0.110282050166409,	0.340831537665284,	0.353344803948875,	0.023969199411952,	-0.037508048676323,	0.084467945077494,	-0.101339199091876,	0.43127923493617,	-0.012803021754092,	-0.187066022130407,	0.045422882183782,	-0.145164655232891,
					 -0.188010538259573,	 0.072561095841883,	-0.215861415006047,	 0.340625060094133,	-0.271380094003135,	 0.011550630486271,	-0.021562277822991,	-0.047039032262669,	0.24569627934439,	0.06878748082518,	-0.013753922818236,	0.128800076934912,	0.251945144841963,	-0.065565948950666,	-0.247270548381727,	-0.049324630517431,	-0.283284532614162,	-0.056856284381622,	-0.038971423817489,	-0.252726173186928,	0.351734439125858,	-0.110658990096839,	-0.106510561670422,	0.03737869055179,	-0.115271643539905,	-0.196770239210232,	0.068745507207565,	-0.202290191092434,	0.230742566811053,	0.242089942893867,
					  0.009670899760703,	 0.19086441968746,	-0.162303316721271,	 0.064683931277254,	 0.164443149200815,	-0.323437173681877,	 0.298292486419165,	-0.287839297934076,	0.103447987260199,	0.066558230735603,	-0.00811153653084,	-0.267028782102504,	-0.109803324276942,	0.030622270397094,	-0.238104734999257,	-0.210337042122685,	-0.039664653707487,	-0.272682220581616,	-0.289034258391312,	-0.056713148536939,	0.041560290546935,	0.135947625574874,	0.288994345741835,	0.171226457682862,	0.020154597183878,	0.087557724549144,	0.128411957307537,	0.266870366178292,	0.074920714589854,	-0.178633022967889,
					  0.058380141741122,	-0.067241741998389,	-0.107729007864175,	-0.056331784327996,	-0.168481007769024,	 0.262125246984163,	-0.007371786978638,	0.164927818594684,	-0.036933870960258,	0.267509327915296,	0.368795934127986,	-0.04754732992007,	-0.164871757638282,	0.316046246052052,	0.326208946153877,	-0.210383643418226,	-0.148743568976932,	-0.27228848616751,	-0.298371974359424,	-0.079114502261498,	0.05112487825332,	-0.103950446102005,	-0.01564162533912,	-0.270929678785201,	0.227289734744482,	-0.122956418941428,	0.102700134174179,	0.066767014869907,	0.049550920130668,	-0.033845164172596,
					 -0.086630774192244,	-0.114904967536104,  0.070689120361513,	-0.034071515269466,	 0.122164936018725,	-0.185544714908452,	-0.269907389645905,	0.053128966344123,	0.063580062903748,	-0.230905233848124,	0.130786631191676,	0.203748730532203,	0.130738123136379,	-0.063121304824537,	-0.291378414288447,	-0.043225535031358,	-0.01069469449417,	-0.116151001188632,	-0.23721367266419,	0.350947535209623,	-0.186552245007249,	-0.152639157418694,	0.254048004058081,	-0.092165966765819,	0.455200922690338,	-0.07128324467846,	0.136761821923458,	-0.205729179281477,	0.069566872999856,	0.148165641059529,
					  0.094081789475437,	 0.164525371012304,	 0.530381662137654,	-0.125311053655768,	 0.103697488442664,	-0.121905535749908,	 0.056068298081543,	0.006703334135084,	0.036583551377082,	0.19140471505715,	0.039561231445405,	-0.055422919551433,	0.022569682208961,	0.296355942714072,	0.072278015477743,	-0.112500040523406,	-0.080236580672682,	0.19033073835967,	-0.174276465756524,	-0.065077925843275,	0.115236637819618,	0.066402495691896,	0.114332383707042,	0.305300264476914,	0.041924689523625,	-0.114010854564669,	-0.352544042259548,	-0.244055210901362,	0.13019634886009,	0.269526775862334,
					 -0.00489419108819,	    -0.3059705776172,	 0.311548390724184,	-0.141572289005789,	-0.203176699858192,	-0.026095435739131,	-0.065157179843688,	-0.038350549407962,	-0.073662373827209,	0.142157446085444,	0.157373461407893,	-0.046099550200634,	0.224210978651247,	-0.298335544413649,	-0.073612901848245,	-0.159247698378578,	-0.051909721672664,	0.145993068464936,	-0.36519319549698,	0.032297295074329,	-0.109562705494831,	-0.167000876200342,	0.043268603623865,	-0.035859010210215,	-0.484116022339656,	0.09192729037904,	0.155163485816933,	0.224679527158001,	0.003313807587358,	0.011812567832784,
                     -0.079164184231885,	-0.079673141928438,	 0.047991031562159,	-0.093766613853708,	 0.31417752040776,	-0.056911358204846,	 0.362675633792648,	-0.060338425113277,	-0.280182381876974,	0.018772162685462,	0.051300062700589,	-0.049623674415283,	0.176261753739058,	-0.060467833054284,	-0.076986055167777,	-0.086777151803824,	0.049098470056174,	-0.187178075938113,	-0.014362935091577,	-0.12289914106784,	0.118233415764786,	-0.341422902426496,	-0.167949488567614,	-0.105989559529699,	-0.060591056127266,	-0.15239285521963,	0.002181073424684,	-0.462669300934778,	-0.297768213927992,	-0.23380321131751,
                     -0.378516156455358,	-0.1433149891874,	 0.047248285574843,	 0.072629998044244,	 0.149384001121451,	 0.237240860059944,	 0.140303661447484,	0.20066037622952,	0.035463732796464,	-0.106195572441474,	-0.031516316526196,	-0.002151701441264,	0.1120768051884,	0.270901510772577,	-0.200351435603717,	0.03852665027653,	-0.418916524751717,	0.143638180001652,	0.061776304496446,	0.033980452524636,	-0.193528759911095,	-0.110620722807679,	0.109607952267434,	0.03346002081992,	-0.014672688437202,	-0.043724266514642,	-0.280786021801147,	0.235169251004673,	0.118943568855134,	-0.366995339144498,
                     -0.090339156130256,	 0.258102936725341,	-0.082642825321426,	-0.177874017144745,	 0.001268583195314,	-0.105702469885669,	-0.090199054235473,	0.094582271703797,	-0.043622730291984,	-0.345727234198456,	-0.209942734609341,	-0.30615350519884,	0.090529904558773,	-0.041653675014824,	0.255573298859712,	-0.100282747841932,	-0.309584581927906,	0.124877004928111,	-0.223740676264403,	-0.031268448227269,	-0.066373754125275,	-0.222674185629732,	-0.403563586099264,	0.212127520816293,	0.167001816786667,	0.094847203771669,	0.173262511782359,	0.085443515162292,	-0.069914437636284,	0.102643402622927,
                      0.055440475109441,	 0.085951891879032,	 0.172992547024373,	 0.262905477453187,	 0.224743205594987,	 0.192540830845651,	 0.110061418307678,	0.113827332043669,	-0.168469541416164,	-0.04800537454653,	0.103346160688271,	-0.180941765207566,	0.011325240855003,	-0.37937643896595,	-0.182592630006882,	-0.221956531577796,	-0.027987786008159,	0.116676051648963,	-0.077346609370271,	0.016773991056786,	0.030200744490138,	0.418769276358264,	-0.283443734028498,	-0.294586681085427,	0.197167046347308,	-0.163506777011674,	-0.103837075932755,	0.134058921059171,	0.081801487643389,	0.109353676269996,
                      0.327360471359169,	-0.28072048808365,	-0.163555479309503,	 0.31919381862241,	 0.063611972539563,	-0.214486982533365,	-0.157654777857054,	0.180549631755488,	-0.055285854531161,	-0.186429790904586,	-0.068249197353824,	-0.064677706786589,	0.152817049718154,	0.144643068264453,	0.056012720322906,	-0.382743611197267,	0.074505674218174,	0.050078384096382,	0.030018371634662,	-0.384023043648669,	-0.184612676085607,	-0.055459493703995,	0.10084350694568,	-0.081489460313665,	-0.021712726717977,	0.262680866816756,	-0.221178011925896,	-0.086134078535059,	0.031300536165372,	0.011861695055184,
                      0.012964948275638,	 0.187786072616282,	-0.056369451537001,	-0.289348154058947,	 0.267823758425312,	-0.088036659356012,	-0.133230824780343,	-0.304146488281969,	0.015965034670596,	-0.050127979326313,	0.106949329082003,	0.103272761307408,	-0.07919152944579,	-0.073430347934756,	0.026235112233403,	-0.021541007721428,	-0.293978552332072,	0.023684646076276,	0.156645243190832,	-0.048501664763,	0.197787704307392,	-0.194211661422967,	0.080180820135367,	-0.496906269530592,	-0.104584005315891,	0.258873613013138,	-0.259649539738847,	0.123811379191117,	0.111293522081587,	0.181939407958772,
                      0.294835878808858,	-0.029209022921241,	-0.217723946054288,	-0.097404777024707,	-0.052429134815045,	 0.040356030871308,	 0.393236833225354,	0.175557179390611,	-0.03094063400247,	-0.177963860281272,	0.449916685915366,	-0.213456939438994,	0.058508695099448,	-0.094405596522676,	-0.008625355411711,	0.039160284839969,	-0.098625835561265,	0.03408199804298,	0.28011442570154,	0.268665001951654,	-0.05434462021136,	-0.110027495654122,	0.08235063573064,	0.205944827529079,	-0.102051034805319,	0.041742870426194,	0.0207325192601,	-0.092449553345455,	0.289687544712165,	0.200232137666344,
                      0.324562283237417,	 0.184648348712247,	 0.022446625011167,	-0.217977077322926,	-0.245608197072427,	 0.223028741194813,	-0.191885672937206,	-0.234565861266814,	0.163142136227469,	-0.034483774167611,	0.136829944775942,	0.010659321371311,	0.043886061930328,	-0.10015800029478,	-0.260708326142898,	-0.209912729155911,	0.074289636558659,	0.192908976804704,	0.05279894151016,	-0.083703330879473,	0.044462302715181,	-0.10922321061719,	-0.119520743996587,	0.115312784885046,	0.219184418022002,	0.006476796614963,	-0.099039640423129,	-0.09552952028645,	0.090279102663188,	-0.520408674965181,
                      0.189874262576368,	-0.095312769672106,	 0.023229777012101,	 0.114052756900062,	-0.095698687766527,	 0.00435622515588,	 0.104383153814706,	-0.101851026410131,	-0.036031847418115,	0.130809079398388,	-0.348176020977506,	0.083868330339566,	-0.008027489258884,	-0.475250515495636,	0.405075360910557,	-0.058330958272204,	-0.324799136178965,	-0.098826394313126,	0.054201621445373,	0.105539013031662,	-0.050165348263293,	-0.110988043058241,	0.307823877172309,	0.065638607280896,	0.175611728595002,	-0.225527874730007,	-0.167576013387015,	-0.025898462181195,	0.047977681482798,	-0.121614920666241,
                      0.024817395005562,	-0.17487826875149,	-0.075479150475883,	 0.189943924393605,	 0.156145281833982,	-0.055799107787251,	 0.097805210291524,	-0.333519405775061,	0.502960649221461,	0.250717861251373,	0.037973315883562,	-0.117614481392449,	0.150749952794974,	0.100713451865893,	0.194650730577328,	0.041542080273073,	-0.043075295232123,	0.14346659720724,	-0.066416684640206,	0.30945572209412,	-0.26079323424583,	0.060654388815103,	-0.330908639343534,	-0.133139659765055,	0.007715506835614,	0.129099603050523,	-0.026526508575731,	-0.186033367233492,	-0.003227201944237,	-0.039533548327422,
                      0.095784409010262,	 0.493960649899082,	 0.054965293016426,	 0.118386898900744,	-0.089743887601218,	 0.011108183624052,	 0.207327445064612,	0.242443769099025,	0.206198128469745,	-0.07993765597308,	0.158376106471485,	0.44069018725539,	0.080476930007356,	-0.063999018485218,	0.045791410027783,	-0.109218662101228,	-0.133146601849485,	-0.063457328740753,	-0.098077643442681,	0.030229627867435,	-0.22587886702408,	0.088840219102173,	0.060713279234327,	-0.042942042030938,	-0.162299014039001,	0.166693220455956,	-0.036996741605182,	-0.03566092366649,	-0.415251090818235,	-0.033476312360835,
                     -0.134737022651914,	 0.178824441680756,	-0.065367644831629,	 0.070421716758178,	-0.380997368249991,	-0.001424117236101,	 0.111786488541009,	-0.315238045340073,	-0.564567583141614,	0.075644045120957,	-0.04106733803819,	0.001359106777444,	0.342613474532435,	0.18843734841569,	0.016632274309598,	0.028151100670402,	-0.040804196229357,	0.078149572314004,	-0.009015740224079,	0.124083718002042,	-0.154078742598099,	0.184197151976838,	0.073620529124081,	-0.129123672253497,	0.132520067351779,	0.24339516107792,	-0.028784979253861,	-0.122593877628548,	0.087287100630432,	0.014242700063557,
                     -0.151931107719764,	-0.0663705228758,	 0.273691836188752,	 0.166063639310765,	 0.083603614767844,	 0.012365248008479,	-0.096837151548972,	-0.323046786194128,	-0.002762106981556,	-0.162979039714608,	0.457731335540932,	0.030662875665406,	0.044328722462083,	-0.132362192693964,	0.204392438255486,	0.213174368356641,	-0.108362051125394,	-0.179307935282083,	0.178742296246812,	-0.435746945897502,	-0.211500176759846,	0.068172045884552,	-0.005852335257529,	0.225384707452164,	0.144166264871071,	0.041229273569432,	0.118238109507269,	0.053070226894351,	-0.013323395106702,	-0.005285812892181};
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
	  y[j] = 0.;
	  if (nx == 10)
	  {
	   for ( l = 0; l < nx; l++)
		    M[l][j] = M1[l][j];
	  }
	  if (nx == 30)
	  {
	   for ( l = 0; l < nx; l++)
		    M[l][j] = M2[l][j];
	  }
  }
  
  for (i = 0; i < nx; i++)
  {
	  for (k = 0; k < nx; k++)
	  {
		  y[i] = y[i] + e[k] * M[k][i];
	  }
  }  


  /* objective function */
  f1 = 0.;
  h1 = 0.;
  
  for (j = 0; j < nx; j++)
    {
      
	  f1 = f1 - y[j] * cos(2 * sqrt(fabs(y[j])));
      
      
    }
  for (j = 0; j < (nx - 1); j++)
    {
      
	  h1 = h1 + (100 * pow(((e[j]+1) * (e[j]+1) - (e[j+1]+1)),2) + pow(((e[j]+1) - 1),2));
      
    }
  f[0] = f1/((double) nx);
  h[0] = h1;
  
}

DLLIMPORT void
C12 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j;
  double f1, h1, g1, e[nx];
  double o[30] = {18.889635068428205,	-59.265426383246485,	33.25998466165768,	20.152694275194037,	-10.734106238462502,	-90.85053128520764,	-12.073899411249897,	59.72307696259165,	-37.44193247323578,	25.963111555782035,	6.251460324561279,	41.478172862575434,	86.54258849813075,	34.94822787072172,	26.864471649916382,	79.55580868986908,	-44.66218241775459,	-7.305741544994362,	87.75843366209835,	33.836473236958284,	84.53385936725138,	80.89850629751817,	48.46967726645195,	-82.0758049330533,	-98.54273249151939,	19.55069746505636,	8.33657824668768,	88.54888769408086,	-79.08282398956031,	63.254014133387614};
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
  }

  /* objective function */
  f1 = 0.;
  h1 = 0.;
  g1 = 0.;
  
  for (j = 0; j < nx; j++)
    {
      
	  f1 = f1 + e[j] * sin(sqrt(fabs(e[j])));
	  g1 = g1 + (e[j] - 100 * cos(0.1 * e[j]) + 10);
      
    }
  for (j = 0; j < (nx - 1); j++)
    {
      
	  h1 = h1 + pow((e[j] * e[j]  - e[j+1]),2);
	       
    }
  f[0] = f1;
  h[0] = h1;
  g[0] = g1;
  
}



DLLIMPORT void
C13 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j;
  double f1, g1, g2, g3, e[nx];
  double PI = 4.0 * atan (1.0);
  double o[30] = {69.69311714880897,	1.509803311435702,	67.6746198312362,	80.43173609273597,	80.47622449424348,	51.21092936019716,	52.7723719926014,	17.248465789326257,	52.40150903116374,	39.64846247456716,	89.86375903333635,	32.079301315169474,	43.192499277837946,	70.79294586561508,	1.48440984483988,	19.8566700417119,	29.502667246412756,	34.256788127976684,	12.643016541338264,	78.57234385195876,	26.51647349482587,	97.06430708087798,	10.180504722002471,	82.90799886855778,	63.540231382573154,	74.78243308676124,	87.20817289266436,	50.779655804893764,	43.05412185616204,	33.862234518700916};
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
  }
  /* objective function */
  f1 = 0.;
  g1 = 0.;
  g2 = 0.;
  g3 = 1.;
  
  for (j = 0; j < nx; j++)
    {
      
	  f1 = f1 - e[j] * sin(sqrt(fabs(e[j])));
	  g1 = g1 + e[j] * e[j];
	  g2 = g2 + sin((1/50.0) * PI * e[j]);
	  g3 = g3 * cos(e[j]/sqrt(((double) (j+1))));
      
    }
  
  
  f[0] = f1/((double) nx);
  g[0] = -50.0 + (1/(100.0 * ((double) nx))) * g1;
  g[1] = (50.0/((double) nx)) * g2;
  g[2] = 75.0 - 50.0 * (g1/4000.0 - g3 + 1.0);
  
}

DLLIMPORT void
C14 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j;
  double f1, g1, g2, g3, e[nx];
  double o[30] = {-31.718907007204272,	-39.536680684207184, -46.033718058035944,	-42.2004014684422,	-28.331307546159135,	-38.64403177375364,	-11.313371899853626,	-11.717383190039943,	-43.345049558717875, -31.46016185891229,	-35.57742732758397,	-45.49638850141341,	-4.177473725277878,	-26.974808661067083,	-46.30991533784743,	-45.997883193212814,	-29.479673271045964,	-4.336542960830036,	-43.66244285780764,	-22.43896852522004,	-25.89273808052249,	-24.221450510218993,	-30.3952886350567,	-31.170730638052895,	-9.859463575974534,	-16.727846507426452,	-44.35226340706524,	-33.10843069426064,	-7.175153678947718,	-4.601421202670486};
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
  }

  /* objective function */
  f1 = 0.;
  g1 = 0.;
  g2 = 0.;
  g3 = 0.;
  
  for (j = 0; j < (nx - 1); j++)
    {
      
	  f1 = f1 + (100 * pow(((e[j]+1) * (e[j]+1) - (e[j+1]+1)),2) + pow(((e[j]+1) - 1),2));
	       
    }
  for (j = 0; j < nx; j++)
    {
      g1 = g1 - e[j] * cos(sqrt(fabs(e[j])));
	  g2 = g2 + e[j] * cos(sqrt(fabs(e[j])));
	  g3 = g3 + e[j] * sin(sqrt(fabs(e[j])));;
	      
    }
  f[0] = f1;
  g[0] = g1 -((double) nx);
  g[1] = g2 -((double) nx);
  g[2] = g3 - 10 *((double) nx);
  
}

DLLIMPORT void
C15 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j, i, k, l;
  double f1, g1, g2, g3, y[nx], M[nx][nx], e[nx];
  double o[30] = {-31.718907007204272,	-39.536680684207184, -46.033718058035944,	-42.2004014684422,	-28.331307546159135,	-38.64403177375364,	-11.313371899853626,	-11.717383190039943,	-43.345049558717875, -31.46016185891229,	-35.57742732758397,	-45.49638850141341,	-4.177473725277878,	-26.974808661067083,	-46.30991533784743,	-45.997883193212814,	-29.479673271045964,	-4.336542960830036,	-43.66244285780764,	-22.43896852522004,	-25.89273808052249,	-24.221450510218993,	-30.3952886350567,	-31.170730638052895,	-9.859463575974534,	-16.727846507426452,	-44.35226340706524,	-33.10843069426064,	-7.175153678947718,	-4.601421202670486};
  
  double M1[10][10] = {-18.785768809450733,	33.616954860437176,	26.882113915382682,	-10.43306419742936,	 0.944892894082476,	-3.353896433259691,	  3.535212733907637,	 7.394276941396782,	  7.790908752641235,	2.091292109983567,
                      -0.38080580880289,	10.420967284673154,	9.347291913115678,	-20.926490513724943, 11.4259031588907,	 1.10563725749954,	  36.87928250597037,	-1.910339780463472,	  7.56116849320932,	   -9.743066435789972,
                      -12.341688082549489,	6.362199355273804,	8.248429939792464,	8.089256366417835,	 0.069234506619011,	 2.578624135957486,	 -0.497340218618186,	-2.062722095484327,	  1.430205147745766,	15.52200376094467,
                      -17.00654251044467,  -12.679306064055677,	51.65812051951116,	-3.97661207806369,	 3.934938475013658,	-30.777202564613845,  6.146597147627116,	-11.404959107806402,  12.694206030880832,  -9.395143228117439,
                      -5.484749154282662,  -13.643476981518553,	-20.8125786035429,	12.48063177681885,	 0.844978205995699,	 24.830393330514045,  33.83850518570256,	-17.003569707093064, -5.293964367404844,	26.065703095424336,
                       11.422878520470586,	10.221461943150496,	-5.999478987400263,	-8.935891602574142,	 3.340791625151446,	 3.924548854255449,	 -6.760571785727851,	 14.016300477765046,  2.353396935795215,   -15.957358828479556,
                       14.1069797350053,   -0.689797572922294,	25.92835826668488,	-30.138271725378775, 12.953067028884863, -17.125782201118525, 19.122903237509483,	 3.85021017121606,	  14.44987126033593,   -37.768641488073015,
                       1.817162027385162,  -4.52289774299815,	2.596064824368431,	-3.077970366333548,	 3.666238380627702,  -3.142271967105208, -1.93910379576585,	    -1.132846020949443,	 -1.459397119228072,   -4.385065305078107,
                       17.05963501513677,  -40.88734304067851,	-9.04136854737176,	9.207816613351653,	 2.483559081696921,	 -3.135238286666343, -0.515970843448524,	-10.448164970351954, -3.97908386413912,	   -5.010151763870892,
                      -2.100410473384162,	4.285743492212902,	18.13880373052391,	-5.569156622351854,	 0.020414928764168,	 -5.531568307180828,  1.750746232557792,	 2.018382353850689,	  8.96737078655512,	   -3.593654241962948};
   
  
  double M2[30][30] = {2.511190264603399,	8.257741094092125,	-4.576972024334265,	11.663051871013478,	 1.839271199160904,	-3.930477981638431,	 6.381869129516557,	 5.554163663846647,	 3.792259995720394,	-8.119579509114208,	-6.749873116676933,	-4.16744839268803,	-5.247229107097693,	 4.380091021522936,	 1.636265206648646,	 1.545744455341335,	 6.729651169519672,	-10.841704025647012, 5.27133366266056,	-7.315142457952093,	 5.586455189183544,	 0.134360209805352,	-4.757951297029205,	-7.494064226166734,	-5.71422876353246,	-3.494974588660678,	 16.86892010541546,	-6.058600435639238,	-11.353403083342686, -1.092357620889664,
                     -1.176252081542598,	0.194672319059377,	 9.262321627779777,	-4.877620455960017,	-3.013825305151295,	 4.138941347418219,	-4.381399078195643,	-1.095599959738453,	 3.362553950833766,	-2.415178728944297,	-6.861613142354518,	-0.005940467288075,	 2.135933445957106,	-0.307275749657439,	 9.502954614655595,	 3.789220991977143,	-2.76964275770075,	 2.672716708411572,	-3.374116812054481,	-2.041106775198442,	-3.340247070143979,	-0.837499094352104,	-5.259049047845686,	-1.521493877085425,	 3.560245065816806,	 0.587849049777596,	-8.24965720380312,	 1.577881184618359,	 2.56392435402041,	  1.537958604481863,
                     -1.308581228315848,   -2.050371351098398,	-3.874959824774145,	-2.136018990593701,	 0.425374281070453,	 3.043654044666869,	 2.852463840006697,	-4.609692730685587,	-2.676989994934014,	 0.018654380314467,	 4.1843245155883,	-2.941454921101105,	-9.0702547942116,	-2.890167502434176,	-6.517087530456076,	-6.458220473167814,	 5.214757843970958,	-5.672828398157034,	-1.291826775778004,	-0.425237758250728,	 2.004256913177237,	 7.010207042020759,	 3.245852998964355,	 0.975852195193769,	 1.406362603904871,	-2.052462316198574,	 2.872078581244381,	 2.445851054572349,	 1.108924529459803,	 -0.260629199129536,
                     -0.691301322822554,   -1.994532314862069,	-8.604754485993125,	-2.97610726321536,	-2.546281717050659,	 0.13089272819699,	-2.095263510257371,	 3.356968437392792,	 0.259978867749323,	 5.401823223841656,	 3.061295803499265,	 1.403978462555566,	 3.459625904755164,	 0.875144781306571,	-4.037867043038509,	 2.69814135487501,	-1.046480563223284,	-0.162120818498023,	 3.972120681919849,	-0.360095886115473,	-3.590431022975543,	 1.135744786203014,	 6.085551336331358,	-0.306597750598646,	-2.349583036995845,	 3.903939972739528,	-1.48181865824383,	-2.878395159465752,	 7.258503538363769,	  4.796644771310021,
                     -0.444232081955838,   -3.571385678786192,	 13.286045625307453,-12.839633153682575,-4.489679872696604,	 7.869013641543565,	-1.965105477391064,	-8.636636350365924,	-0.094822649845242,	-10.673493697992319,-12.53156986402604,	-1.854979185138595,	-4.845831775303889,	-3.303193299843544,	 14.504105531464209, 2.590044768433951,	-6.135686158996087,	-4.270904315841696,	-6.861683086853831,	-2.744870140116196,	-5.102676391316569,	 5.943125003510186,	-8.766966677691988,	 2.000662359536807,	 0.48220557102434,	 7.450887387478847,	-10.45013256174983,	 3.625933262996068,	 4.179177543735097,	  3.98247679713907,
                     -10.464299208072154,  -0.185820260985436,	 6.552041396672776,	-5.911945191669922,	 8.168937620030086,	-10.982208830632558,-3.00135846456146,	 2.912065997677753,	 2.671937505436929,	-3.256558888247419,	-1.010981945614573,	-8.18916926806801,	-12.001606012082647, 0.565140546704374,	-6.816130902986662,	 7.034212706943163,	 12.40601107576485,	-14.537675875626526, 1.401546347401862,	 0.070761477781216,	 5.173018588042309,	 17.500331178638167, 3.097673254889692,	-4.026635320023784,	 3.007819170833911,	-6.986787465181084,	 6.394195915881141,	 3.687826212758699,	-10.500866576776128, -13.151879796730649,
                     -5.781123825040053,   -4.695427919915561,	 9.384139425829048,	-7.575211154097536,	 8.514278328525183,	-5.720630545110835,	-3.828493595935516,	 5.90998861394398,	 0.148907769173485,	-0.631185579095166,	-7.572076478194538,	-3.770557393047349,	-8.178577514209056,	-5.098256869553833,	-12.07105725371895,	 1.248737932444238,	 0.478544192523777,	-8.678825875969533,	-0.946209858630089,	-0.78972756845699,	-8.64978321329506,	 2.485419664365408,	 12.153488342644684,-3.062242328783848,	-0.170370275829816,	-2.093524789628705,	-5.15404262324049,	 4.508277504607992,	 1.61064781893081,	 -3.274879887486953,
                      2.268818310206689,	7.300452401745146,	-4.331575628327129,	10.74428874720899,	 0.15049273777556,	-0.522703831910356,	 6.686183057924437,	 3.782219973575128,	 2.188704155720839,	-8.966284106856413,	 7.937092834912006,	-1.31567415453634,	-3.395220022143096,	 1.559847175500902,	 2.78883479224772,	-2.138994752636062,	 8.323858134206022,	 1.103349691459627,	 2.080995858068952,	 3.671907915458957,	 10.73018786831511,	-0.786574921144261,	-12.077147983799486,-3.200483300835418,	 1.964680859010843,	-2.657000417145831,	 12.549412268552729,-5.048053145262655,	-8.92560318109584,	 -3.291078633192861,
                      0.041055194191982,	4.198164286592344,	 0.380892004577647,	-8.23942251831774,	 4.779957612796264,	-3.478785140983899,	-4.340229693544734,	-1.26961685769858,	 6.146810236016467,	-3.071864805992567,	 0.971337912956829,	-5.896120164000506,	-0.757550831858382,	 0.878200934289778,	-1.532518943062243,	 5.844371522790389,	-0.837014728066397,	-3.907278737140878,	-2.030173016623314,	 3.202676786182734,	 1.470137096717735,	 6.858775309836105,	-5.751687072684216,	 2.261109122092457,	 5.446233047509159,	-0.994575214031629,	-4.198066474981203,	-0.916283719062444,	-4.341766414322003,	  0.660003095340524,
                     -4.758805234887069,   -1.249096368305273,	 5.230241683696193,	-19.44236789411332,	 3.990165558570265,	-5.21678532927235,	-4.960118855176376,	 2.113664727176411,	 0.365246740004055,	 3.670941659701974,	-1.914288039871711,	-6.094333718753953,	-2.682967627659987,	 1.227422326532798,	-9.433645672535167,	 4.96643787530529,	-3.616907241245708,	-0.145552345328748,	-2.280394788413511,	 2.265409089297554,	-5.317818474692691,	 4.356958717932082,	 9.75139488271248,	 2.184418024240871,	 4.551729219908339,	-3.203937519303825,	-8.161877539527412,	 9.881964507838315,	-0.942679393999977,	 -4.09075977260806,
                      5.895714456877837,	5.673958378336709,	-7.551189095277389,	 8.6763663921392,	-8.74212847286295,	 7.876941413449155,	 6.186314942878492,	-1.385292259378321,	 2.339350501494244,	-7.303402814099851,	-0.620345906721456,	-3.21480044327725,	-0.528558678306147,	-0.327651725159052,	 6.60017678920534,	-4.030480514390237,	-2.74819741682516,	 1.131719959794813,	 4.041615304275,	-3.807276819902737,	 7.174795405973731,	-7.105910692661075,	-16.16824790535485,	-8.490742807482299,	-1.205275569694925,	-3.213783451897369,	 10.19460083362542,	-8.1537702193513,	-3.34614228867147,	  6.852576635102674,
                      5.050755100515472,   -1.015084166538332,	-4.488951762662663,	 3.071909362047136,	-6.309214790805194,	 4.607171586689359,	 0.518771985931275,	 2.576207604994254,	-2.538951540887637,	 3.871170428002043,	 0.86099787829018,	 9.333192517131101,	 3.898241746958841,	 2.045637143082407,	-4.632172666627585,	-3.251052343878506,	-10.340844584872428, 9.938362935470167,	 2.681875064667896,	-0.30928871960663,	-3.553804690623363,	-11.909220170048043, 3.407795649838816,	-0.852234992909218,	 1.470543694236073,	 0.018651383236502,	-0.400939937078999,	 1.006604199340888,	 5.546567833598792,	  8.936287451220219,
                     -2.296736642073308,   -7.507685960269931,	 3.878804185286892,	 1.927870783876082,	 8.606052457582582,	-4.902250427177561,	-0.369415251862622,	 3.771105898431047,	-4.497236148553519,	 6.92064424996612,	 6.555606653106257,	 3.979481264635631,	 0.551670017289274,	-1.250380372234189,	-11.577926205347564, 0.98949362466787,	 4.643449205576342,	 0.039903009834915,	 2.717889467266028,	 2.628829050189848,	-1.391097858187011,	 2.040534828877561,	 14.571897255676616, 1.64579970252636,	-0.601128848469179,	-0.840404796582696,	-1.463197992681945,	 3.202376802222665,	-1.671176838446732,	 -3.3759766251534,
                     -3.937515676606634,   -3.139929919295693,	 7.06320923587761,	 1.809248475068868,	 8.870247836692679,	-7.116279757514643,	-0.561569800957993,	 1.607623766047816,	-0.442980337701897,	-5.392629763518957,	 3.253312934476978,	-0.53910491395161,	-7.500926900397016,	 0.980573085142957,	-5.634247758036995,	 2.236908157606175,	 3.147822704551946,	-5.937762475731414,	 0.887239059660158,	 3.778662703078195,	 4.579851636624116,	 9.68224407023739,	 0.005007990083924,	-2.066608587954049,	-2.840100747113819,	 1.07267047086035,	 6.107120400203828,	-2.014818439278602,	-7.165823950693442,	 -9.272074819149603,
                     -2.680240010855875,	0.356004349959002,	-0.414456907621788,	-0.067764618278143,	 5.320643303727243,	 0.737875437883548,	 1.213668435898487,	-3.145814327985767,	-2.507697183673514,	 2.536104038824088,	 3.558431317438912,	 2.131159153330951,	 3.764201252276733,	 0.816204397371172,	-4.632956423959657,	 0.184120289127522,	 1.217433374070159,	-4.036068485529014,	 2.258556949877698,	-0.910082542366675,	 3.754187256312381,	 7.457650756177197,	 1.456847256376522,	-1.608612250250221,	-0.757648771963665,	 3.790322347324032,	 0.887040099051261,	-6.027791111032598,	-0.328191702726934,	  0.866002766609515,
                      6.578208237675698,	0.818410293291321,	-9.288863917296439,	 22.14413550757907,	-5.223269252930489,	 1.804141126348005,	 6.924767448007314,	-2.776780120617464,	-2.494384185627731,	 4.743636200841757,	 2.69082215234061,	 6.088855334101281,	 0.981039450131136,	-0.123672950299567,	-0.140131828740133,	-13.797914058713273,-1.914030716314594,	 1.35605332601434,	 2.48584096184779,	-2.669304324669153,	 2.289369793279759,	-12.59957022859263,	 0.93847348962723,	-3.000750651813473,	-6.748464919761018,	-2.998991813272391,	 7.50927404965129,	-4.712789813740673,	 2.583974262309686,	  4.259407321635679,
                     -4.302432019312597,	1.030219160973822,	-0.035401401034044,	-3.864603659100286,	 11.181713062447539, 1.799128842154124,	-4.632382202673897,	-2.780991517575134,	-2.531316968742212,	 10.165545659183975, 1.550622641761506,	 5.402782921171298,	 7.066734336942432,	 3.559465053224369,	-7.838510786198628,	 0.872794527931054,	-6.729399256798964,	 1.851943659950421,	-3.17302307338725,	 0.303477456308984,	-7.294328632117977,	 0.431243357642238,	 12.108553118909567, 2.785512313731942,	 3.951422589853138,	 5.216571541524427,	-14.01807799640241,	 3.680618250481408,	 10.312528175880152,  9.072426201364811,
                     -5.532986492249091,	1.368157626742091,	-2.996278911375891,	 1.180587738377175,	-1.172736098947577,	-3.033440537456964,	 0.240827440148848,	 1.274554856316978,	 3.664070614586986,	 1.450239057462672,	 0.43774922918318,	-5.139121137322196,	-2.184239731700786,	-1.722673663384784,	 5.003903006525603,	 1.555677376370723,	 4.592628073610951,	 0.031529946446351,	 1.962038675057533,	 1.311519327333439,	 2.97144042923956,	 4.358628571380574,	-3.02091040718656,	-2.026289674016738,	-2.179100342988682,	 0.199561404454555,	-0.642268764969934,	-0.48430217469127,	 0.867697193885426,	 -3.428256695897337,
                      4.749688683748538,   -3.013096235466324,	-0.896473471506158,	-5.404408901826174,	 3.25190012448197,	 4.700501169041437,	-0.485841922084629,	 2.129019854577554,	-5.743986607455017,	 5.05072704099386,	 5.290426760843522,	 10.017074714718186, 4.109783454482344,	-2.171588999232304,	-9.143973237995885,	 2.158096752256321,	-4.288300573083361,	 8.440796859622568,	 0.622933708201643,	 0.366857770589574,	-5.372666211859802,	-6.422211641960874,	 12.41021882450194,	 3.749357041671196,	 2.769912683036556,	 3.508222243674678,	-5.740173772592829,	 6.606652001961278,	 5.630677773801195,	 6.253155297611987,
                      4.559034813600619,	0.191335026648024,	-9.72469888506327,	 16.676435885179576,-11.815244699143054,-2.963619615334862,	 2.644195062564698,	-3.504534753584204,	 1.539473850852911,	 3.24795330924284,	 4.136178478443613,	-1.415042231009744,	 0.180777361594801,	-2.516794720186608,	 6.160828524988144,	-6.794575512958723,	 0.075817729728995,	 0.72736717628741,	 1.668305542072184,	 1.253458327957929,	 7.270581180009739,	-5.020680731171347,	-10.710260791368778,-3.482314899976028,	-3.159956937857408,	-5.264233710547034,	 7.244641579264396,	-10.641144576600027,-0.028015125221679,	 0.21956976936331,
                     -2.551308504381034,   -5.624763316256503,	 5.82275011984547,	-18.83984795424589,	 2.287665332808314,	 3.202650930764413,	-0.143157181428193,	-1.939337105017224,	-7.297486396599838,	 4.714811455331595,	-2.285923849103187,	 1.571914512358247,	 1.18868883861133,	 0.665125048665022,	-3.62112489105088,	 7.315055227559002,	 2.59208112683563,	-3.604968061282964,	-1.269251512788574,	-4.603628537664914,	-6.186864603084382,	 8.62584019419564,	 15.640620254332642, 9.339712043883617,	 0.70056492461347,	 8.033185101455041,	-8.984569662115023,	 8.756788125840803,	 3.000294638756253,	 1.55270194363742,
                     -3.861290375479539,   -4.675448372631536,	 9.251215593601152,	-23.607840924556356,-8.695565550492798,	-2.989076129194713,	-4.739435400680438,	 2.835678457877207,	-0.098166653883445,	-12.599368055638564,-10.371683803332736,-6.880266107606954,	-13.323520170751154, 0.836643098136934,	 5.174040794619552,	 10.49263721553011,	 6.802053133291294,	-6.116168624020712,	 0.612168202208346,	-1.561678744412428,	-2.961017400369882,	 14.555633724082611,-2.408921040101399,	 4.164763222501917,	-1.288537113083328,	 0.52492159991554,	-0.419743809901388,	 6.847306921165118,	-2.417811780641292,	-7.702891475003848,
                      4.161137142387705,	1.482037717792366,	 1.287113176047423,	-11.780576083757202,-13.704438843176279, 2.252970644465878,	-4.628978648000722,	-8.44852567895537,	 4.501241923053804,	 3.218082210067639,	-9.096692746700437,	-6.359766478822383,	 2.458766877052462,	 2.747239663468253,	 11.352826871439879, 1.690071756894771,	-4.94464758404481,	 1.287478245120863,	-5.514465163301222,	-0.436320463384376,	-2.460885613501708,	-2.766872615896895,	-5.244256957948294,	 3.839764805067356,	 1.974486773795782,	-3.850467595501656,	-5.719184031653332,	 3.112555194710462,	 2.191998679485594,	-0.13026077572474,
                      2.105310692725196,	0.544816987896791,	 1.846346039423678,	-0.509784805488332,	-8.19139781918348,	-0.226849791351708,	-3.085179788781892,	-5.699211118481947,	 3.293594390108838,	-2.909444711189409,	-7.764958328853763,	-1.166897030507534,	 3.020313808115756,	 6.799166924533074,	 10.7746541697421,	 1.525039302686581,	-7.554231411053715,	-0.587013107919599,	-1.300759655302306,	-4.080716282648349,	-2.186465568681216,	-2.406484706468079,	-6.958047179121224,	-3.235753723041708,	-4.304227928343334,	 0.206370537347841,	-2.625027214135385,	-5.715311685851154,	 1.3755895996309,	 7.31396280189546,
                      4.460614374892582,	3.19529761978484,	-8.190318873976533,	 17.720929604353678, 1.079903507675288,	 4.032046572169589,	 6.846170634331792,	-2.990923968785385,	-1.01384879195201,	 4.210550185586089,	 0.764711025819911,	 6.307647053631859,	 6.791811206494187,	 1.358857762637734,	-1.624613814301878,	-10.150256933841442,-8.955086516370987,	 2.41129571860055,	 2.991835863170325,	-2.084105485259767,	-0.387882836033353,	-12.037911290804784, 0.784781445004331,	-3.51258593199461,	-6.358051224678802,	 2.354270933909405,	 1.762978551917006,	-7.508929712507494,	 4.153956520027669,	 8.430589071222315,
                      0.112995451436564,	0.371936786139806,	-7.025568330781,	 9.769013689448464,	-0.640793257766108,	-11.677067837314976, 1.451572748927877,	 1.171502164469018,	 1.692647658091279,	-0.881205326796837,	 4.268282553052323,	-5.637459471007516,	-4.897450001353112,	 0.171735893079777,	-0.9211330468045,	-2.490514871584582,	 9.607046944744821,	-7.206797204798768,	 4.349647727744751,	 4.621339140117586,	 10.832359506208546, 5.100626759149631,	-4.076131311364439,	-0.932775487935339,	 0.50265512140222,	-8.6858164471001,	 15.294166113376837,-5.994248698329602,	-11.694453405846096,-11.801285777570579,
                      3.672120136902007,	2.62662795338849,	-6.295270647326517,	-1.069859934951232,	-3.811330299405138,	 1.594900688552953,	-0.822649421610342,	-2.996102354897966,	 0.011410712161871,	 3.804973955584018,	 0.29095969601554,	 0.154412566421657,	 6.009123692794804,	 1.048840941857638,	 0.1142053347247,	 1.041139886749876,	-1.766488251223224,	-1.232261508678568,	 3.296071326639848,	-2.373608140335303,	-1.250158758539599,	-0.720873134553766,	-0.615677318700518,	 1.403259047870607,	 3.005529442348132,	-1.215626145907597,	 0.042094269477194,	-2.231879359014662,	 1.611360878893429,	 6.469735186892669,
                     -5.818552929715837,   -0.916929571232854,	-0.366611990060092,	-5.12995032472354,	 6.905064130414796,	-6.544579871223458,	-7.16220048221164,	-1.218392721965018,	 0.028386972148047,	 13.304659303178061, 5.212031101975595,	-0.198414575621711,	 2.043938045553383,	-0.295480321457095,	-9.738766031154933,	 4.373893439532715,	 5.133821298601127,	-6.818797238217159,	 2.032166191824439,	 1.299068415608013,	-5.282486677908174,	 8.79704452443048,	 12.849891231025046, 2.787156804154204,	 6.225881805493842,	-4.429387659772509,	-7.4036051874247,	 3.478946685666019,	 1.632891481413625,	-1.105751993528384,
                      3.486878591381191,	2.633938629834198,	-3.834544259817514,	 6.338661537296378,	 0.08440220487435,	 0.891537452927858,	 7.386752241464462,	-3.143341265990022,	 0.17569569189933,	-1.189840684944929,	 2.063745656499299,	-3.873741753209196,	 7.631037421790815,	 0.870407519991694,	 5.416923136109038,	-4.796174802688587,	-5.441484022053353,	 7.113220057014851,	-4.021007101784125,	 1.093337823554031,	-0.723713415910556,	-11.778856908851662, -8.947505317275446, 0.371697970006654,	-3.368349776966538,	 4.657443083154591,	 0.453955538023004,	-1.740701616944006,	-1.65220541740956,	 1.029317693975664,
                      2.46194490699664,	   -0.336732006333566,	-0.552403825578577,	-8.452671777634976,	-5.633844858472623,	 4.461702367049373,	-3.779157969724202,	 2.769245822243623,	-1.006803537946152,	 1.372993145527169,	-2.883759917737196,	 3.935344741349428,	 1.588807880940938,	 1.666332742486905,	-3.345107247615156,	 9.018878681488209,	 4.966343941267382,	-2.378406115718362,	 4.984115491643569,	-6.369451753840427,	-4.810457553048149,	 4.695631510723671,	 8.870216904135045,	 1.851266423773728,	 0.47853186190453,	 2.284171420203474,	-1.699791507685024,	 4.11585412102773,	 2.079681507808699,	 6.064422880045283};
   
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
	  y[j] = 0.;
	  if (nx == 10)
	  {
	   for ( l = 0; l < nx; l++)
		    M[l][j] = M1[l][j];
	  }
	  if (nx == 30)
	  {
	   for ( l = 0; l < nx; l++)
		    M[l][j] = M2[l][j];
	  }
  }

  for (i = 0; i < nx; i++)
  {
	  for (k = 0; k < nx; k++)
	  {
		  y[i] = y[i] + e[k] * M[k][i];
	  }
  }  

  /* objective function */
  f1 = 0.;
  g1 = 0.;
  g2 = 0.;
  g3 = 0.;
  
  for (j = 0; j < (nx - 1); j++)
    {
      
	  f1 = f1 + (100 * pow(((e[j]+1) * (e[j]+1) - (e[j+1]+1)),2) + pow(((e[j]+1) - 1),2));
	       
    }
  for (j = 0; j < nx; j++)
    {
      g1 = g1 - y[j] * cos(sqrt(fabs(y[j])));
	  g2 = g2 + y[j] * cos(sqrt(fabs(y[j])));
	  g3 = g3 + y[j] * sin(sqrt(fabs(y[j])));;
	      
    }
  f[0] = f1;
  g[0] = g1 -((double) nx);
  g[1] = g2 -((double) nx);
  g[2] = g3 - 10 *((double) nx);
  
}
DLLIMPORT void
C16 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j;
  double f1, f2, g1, g2, h1, h2, e[nx];
  double PI = 4.0 * atan (1.0);
  double o[30] = {0.365972807627352,	0.429881383400138,	-0.420917679577772,	0.984265986788929,	0.324792771198785,	0.463737106835568,	0.989554882052943,	0.307453878359996,	0.625094764380575,	-0.358589007202526,	0.24624504504104,	-0.96149609569083,	-0.184146201911073,	-0.030609388103067,	0.13366054512765,	0.450280168292005,	-0.662063233352676,	0.720384516339946,	0.518473305175091,	-0.969074121149791,	-0.221655317677079,	0.327361832246864,	-0.695097713581401,	-0.671724285177815,	-0.534907819936839,	-0.003991036739113,	0.486452090756303,	-0.689962754053575,	-0.138437260109118,	-0.626943354458217};
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
  }
  /* objective function */
  f1 = 0.;
  f2 = 1.;
  g2 = 1.;
  g1 = 0.;
  h1 = 0.;
  h2 = 0.;
  
  for (j = 0; j < nx; j++)
    {
      f1 = f1 + e[j] * e[j];
	  f2 = f2 * cos(e[j]/sqrt(((double) (j+1))));
	  g1 = g1 + (e[j] * e[j] - 100 * cos(PI * e[j]) + 10);
	  g2 = g2 * e[j];
	  h1 = h1 - e[j] * sin(sqrt(fabs(e[j])));
	  h2 = h2 + e[j] * sin(sqrt(fabs(e[j])));
      
    }
  
  f[0] = f1/4000.0 - f2 + 1.0;
  g[0] = g1;
  g[1] = g2;
  h[0] = h1;
  h[1] = h2;
  
}

DLLIMPORT void
C17 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j;
  double f1, h1, g1, g2, e[nx];
  double o[30] = {-0.628245703945122,	0.331024455127249,	0.402617203423807,	0.462742527496583,	-0.513329779137884,	0.288191632492259,	0.41479349370103,	0.916196063289011,	-0.427742767473712,	0.811971694633694,	-0.202953396286476,	0.786617208861492,	-0.583805982901842,	0.91666360939369,	-0.602135912772221,	0.503807046950863,	-0.196264987447976, -0.565579687152807,	0.540878947793462,	0.183666358669345,	-0.303576255198908,	-0.896405440407756,	-0.101939801890135,	-0.049819872322279,	0.434240825173134,	0.946552963504364,	-0.32578927683003,	-0.154255792477949,	0.577967633549953,	-0.573697797217518};
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
  }

  /* objective function */
  f1 = 0.;
  h1 = 0.;
  g1 = 1.;
  g2 = 0.;

   for (j = 0; j < (nx - 1); j++)
    {
      
	  f1 = f1 + pow((e[j] - e[j+1]),2);
	       
    }
  
  for (j = 0; j < nx; j++)
    {
        
	  h1 = h1 + e[j] * sin(4*sqrt(fabs(e[j])));
	  g1 = g1 * e[j];
      g2 = g2 + e[j];
      
    }
 
  f[0] = f1;
  h[0] = h1;
  g[0] = g1;
  g[1] = g2;
  
}



DLLIMPORT void
C18 (double *x, double *f, double *g, double *h, int nx, int nf, int ng, int nh)
{
  int j;
  double f1, h1, g1, e[nx];
  double o[30] = {-2.494401436611803,	-0.306408781638572,	-2.271946840536718,	0.381278325914122,	2.394875929583502,	0.418708663782934,	-2.082663588220074,	0.776060342716238,	-0.374312845903175,	0.352372662321828,	1.172942728375508,	-0.24450210952894,	1.049793874089803,	-1.716285448140795,	-1.026167671845868,	-1.223031642604231,	0.924946651665792,	0.93270056541258,	-2.312880521655027,	-0.671857644927313,	-0.312276658254605,	-0.973986111708943,	-0.454151248193331,	2.420597958989111,	0.050346805172393,	1.050203106200361,	-0.05420584346617,	-0.081533357726523,	-0.968176219532845,	1.682281307624435};
  for (j = 0; j < nx; j++)
  {
	  e[j]= x[j] - o[j];
  }

  /* objective function */
  f1 = 0.;
  h1 = 0.;
  g1 = 0.;

   for (j = 0; j < (nx - 1); j++)
    {
      
	  f1 = f1 + pow((e[j] - e[j+1]),2);
	       
    }
  
  for (j = 0; j < nx; j++)
    {
      
	  g1 = g1 - e[j] * sin(sqrt(fabs(e[j])));
	  h1 = h1 + e[j] * sin(sqrt(fabs(e[j])));
      
    }
 
  f[0] = f1;
  h[0] = h1/((double) nx);
  g[0] = g1/((double) nx);
  
}
